我使用django rest框架和令牌auth作为后端身份验证 . 在提交用户凭据时,来自后端令牌的格式为此格式
{token:“cKCxxxxxxxxxxxxxxxxxxxxx”}
在前端ember-simple auth我尝试登录时使用oauth2作为验证器说:
验证者“authenticator:oauth2”被拒绝恢复会话 - 无效...
并且会话未保存它已登录但当路由更改时它已注销 . 如何在 Headers 中附加标记?当使用ember-simple-auth时,它必须自动附加或我得到错误???
login.js
actions: {
authenticate(username, password) {
var controller = this.controller;
this.get('session').authenticate('authenticator:oauth2', username, password).catch((reason) => {
controller.set('errorMessage', reason.detail || reason);
console.log(this.get('session.data.authenticated'));
});
}
}
和验证者:
import OAuth2PasswordGrant from 'ember-simple-auth/authenticators/oauth2-password-grant';
export default OAuth2PasswordGrant.extend({
serverTokenEndpoint: 'http://127.0.0.1:8000/api/auth/login/',
});
授权者:从'ember-simple-auth / authorizers / oauth2-bearer'导入OAuth2Bearer;
export default OAuth2Bearer.extend({
});
适配器:
import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DS.RESTAdapter.extend(DataAdapterMixin, {
host: 'http://127.0.0.1:8000',
namespace: 'api',
authorizer: 'authorizer:oauth2',
});
1 回答
TLDR :Ember Social API在DRF发出
token
时查找access_token
服务器端修复
您需要子类化TokenSerializer并覆盖
keyword = Bearer
客户端修复
OAuth2Bearer需要一个名为
access_token
的标记值,如果该值存在,它将添加带有Bearer
前缀的Authorization标头 . 但是,DRF令牌期望Authorization标头以Token
为前缀,请参阅下面的代码以更好地展示DRF TOKEN的工作授权人
参考orignal OAuth2Bearer
Ember Social Auth - OAuth2Bearer