Ember.js Ember Simple Auth未设置承载令牌

Ember.js Ember Simple Auth未设置承载令牌,ember.js,Ember.js,无论出于何种原因,我的身份验证似乎在登录时正常工作,但我无法访问任何使用余烬数据的路由。持票人代币似乎未设置 这是我的登录表单组件 import Ember from 'ember'; export default Ember.Component.extend({ session: Ember.inject.service(), actions: { authenticate() { let { identification, password } = this.

无论出于何种原因,我的身份验证似乎在登录时正常工作,但我无法访问任何使用余烬数据的路由。持票人代币似乎未设置

这是我的登录表单组件

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中)

这是我的验证器(位于app/authenticators/oauth2.js中)


如果有人看到我遗漏了什么,请告诉我。谢谢大家!

我想我应该把这个写下来作为一个答案,因为其他的一切对我来说都很好

session: Ember.inject.service('session')

虽然如果是这样的话,那么调用authenticate是没有意义的。。。嗯,你说登录似乎有效吗?

我想我应该把这个写下来作为一个答案,因为其他一切对我来说都很好

session: Ember.inject.service('session')

虽然如果是这样的话,那么调用authenticate是没有意义的。。。嗯,您说过登录似乎可以正常工作吗?

如果您使用的是余烬数据,则您的应用程序适配器上缺少DataAdapterMaxin

请参见此处的示例:

有关守则如下:

// 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数据,那么您必须自己设置适配器,以便将令牌手动注入到auth请求中。你可以在上面的链接上看到一些例子


编辑:修复了授权人的名称,您的名称位于authorizers/application.js中,因此授权人是“authorizer:application”

如果您使用的是ember数据,则您的应用程序适配器上缺少DataAdapterMaxin

请参见此处的示例:

有关守则如下:

// 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数据,那么您必须自己设置适配器,以便将令牌手动注入到auth请求中。你可以在上面的链接上看到一些例子


编辑:修复了授权人的名称,您的名称位于authorizers/application.js中,因此授权人是“authorizer:application”

尝试此:session:Ember.inject.service('session')尝试此:session:Ember.inject.service('session')。inject.service的“session”参数不是严格要求的(尽管我总是为了清楚起见)。只要键与服务名称匹配,就可以使用.service()调用它。如果我想给密钥命名为mySession或类似的名称,那么我需要使用mySession:Ember.inject.service(‘session’)哈,别开玩笑了,谢谢!学习新东西很好。看到你的答案后,我意识到这更有道理.inject.service的'session'参数并不是严格要求的(尽管为了清晰起见,我总是使用它)。只要键与服务名称匹配,就可以使用.service()调用它。如果我想给密钥命名为mySession或类似的名称,那么我需要使用mySession:Ember.inject.service(‘session’)哈,别开玩笑了,谢谢!学习新东西很好。看到你的答案后,我意识到这更有道理