You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ember Simple Auth:'authorize'已弃用,如何修复该警告?

修复Ember Simple Auth的"'authorize'已弃用"警告

嘿,我来帮你搞定这个弃用警告的问题!从你给出的环境和代码来看,你用的是ember-simple-auth@1.6.0和ember-cli@3.1.4,之前在ActiveModelAdapter里配置authorizer: 'authorizer:devise'触发了警告对吧?

问题原因

在Ember Simple Auth 1.5及以上版本中,适配器里直接配置authorizer的方式已经被弃用了,官方把授权逻辑的配置移到了全局Session设置,或者需要手动通过Session服务来处理请求授权。

具体修复方案

这里给你两种可行的修复方式,选一种适合你的就行:

方式一:手动通过Session服务添加授权头

移除适配器里的authorizer配置,改用session服务的authorize方法在请求里注入授权信息:

import ActiveModelAdapter from 'active-model-adapter';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
import { inject as service } from '@ember/service';

export default ActiveModelAdapter.extend(DataAdapterMixin, {
  host: ENV.APP.API_HOST,
  session: service(),

  ajaxOptions(url, type, options) {
    let requestOptions = this._super(...arguments);
    // 调用授权器的方法添加请求头
    return this.session.authorize('authorizer:devise', (headerName, headerValue) => {
      requestOptions.headers[headerName] = headerValue;
    }).then(() => requestOptions);
  }
});

方式二:全局配置Session授权器(更简洁)

  1. 先在config/environment.js里全局配置Ember Simple Auth的授权器:
ENV['ember-simple-auth'] = {
  authorizer: 'authorizer:devise'
};
  1. 然后修改你的适配器,移除authorizer: 'authorizer:devise'这一行,只保留必要配置:
import ActiveModelAdapter from 'active-model-adapter';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default ActiveModelAdapter.extend(DataAdapterMixin, {
  host: ENV.APP.API_HOST
});

额外说明

第二种方式更符合新版本Ember Simple Auth的设计思路,它会让DataAdapterMixin自动使用你全局配置的授权器来处理所有请求的授权,不用在每个适配器里重复配置。

如果你的devise授权器是自定义的,只要它遵循了新版本的authorize方法签名(接收回调函数来设置请求头),就不需要额外修改,默认的authorizer:devise已经适配了这个变化。

内容的提问来源于stack exchange,提问作者AdminDev826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:35:50