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授权器(更简洁)
- 先在
config/environment.js里全局配置Ember Simple Auth的授权器:
ENV['ember-simple-auth'] = { authorizer: 'authorizer:devise' };
- 然后修改你的适配器,移除
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
相关产品推荐
相关产品推荐

