无论出于何种原因,我的身份验证似乎正常用于登录,但是我无法访问任何使用Ember Data的路由。承载令牌似乎没有被设置。
这是我的登录表单组件
import Ember from 'ember';
export default Ember.Component.extend({
session: Ember.inject.service(),
actions: {
authenticate() {
let { identification, password } = this.getProperties('identification', 'password');
this.get('session').authenticate('authenticator:oauth2', identification, password)
.catch((reason) => {
this.set('errorMessage', reason.error);
console.log(reason.error);
});
}
}
});
这是我的授权人(住在app / authorizers / application.js)
import OAuth2Bearer from 'ember-simple-auth/authorizers/oauth2-bearer';
export default OAuth2Bearer.extend();
这是我的身份验证员(住在app / authenticators / oauth2.js)
import OAuth2PasswordGrant from 'ember-simple-auth/authenticators/oauth2-password-grant';
import config from 'contacts/config/environment';
export default OAuth2PasswordGrant.extend({
serverTokenEndpoint: config.APP.host + '/' + config.APP.namespace + '/authenticate',
});
如果有人发现我遗漏了什么,请告诉我。谢谢!
答案 0 :(得分:0)
我想我会把它写成答案,因为其他一切对我来说都很好
session: Ember.inject.service('session')
虽然如果是这种情况,你可以调用身份验证是没有意义的......嗯,你说登录似乎有效吗?
答案 1 :(得分:0)
如果您使用的是ember-data,则缺少应用程序适配器上的DataAdapterMixin。
请参阅此处的示例:
http://log.simplabs.com/post/131698328145/updating-to-ember-simple-auth-10
相关代码是:
// app/adapters/application.js
import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
authorizer: 'authorizer:application'
});
DataAdapterMixin将令牌注入到请求头中,因此如果身份验证正在运行,但后续的API请求不起作用,则问题可能出现在此文件中。
如果您没有使用ember-data,那么您必须自己设置适配器以手动将令牌注入auth请求。您可以在上面的链接中看到一些示例。
编辑:修正了授权者的名称,你的名字住在authorizers / application.js中,所以授权人是“授权人:应用程序'