Ember.js - 如何将数据从身份验证器保存到会话?

Ember.js - How can I save data to session from authenticator?

我试过 this.get('session') 但它什么也没给我。

我想将数据保存到我的会话

我似乎只能从身份验证器获得我需要的信息,但似乎无法传递它。 (尝试了 SO 上建议的几种方法,但 none 似乎能够从身份验证器工作)

import Ember from 'ember';
  import Torii from 'ember-simple-auth/authenticators/torii';

  const { service } = Ember.inject;

  export default Torii.extend({
    torii: service('torii'),
    authenticate(options) {
      return this._super(options).then(function (data) {
        console.log(data);
      });
    }
  });

认证者的调用者(我需要的信息已经可以从这里访问了吗?)

import Ember from 'ember';

export default Ember.Controller.extend({
   session: Ember.inject.service('session'),
    actions: {
      authenticateSession() {
        this.get('session').authenticate('authenticator:torii', 'google-token');
      },
      invalidateSession() {
        this.get('session').invalidate();
      }
    }
});

您的身份验证器的 authenticate 方法没有解决任何问题。改成

import Ember from 'ember';
import Torii from 'ember-simple-auth/authenticators/torii';

const { service } = Ember.inject;

export default Torii.extend({
  torii: service('torii'),
  authenticate(options) {
    return this._super(options).then(function (data) {
      console.log(data);
      return data;
    });
  }
});

通过会话的 data.authenticated 属性 使 data 中的所有属性可用,例如this.get('session.data.authenticated.token').

当然,在这种情况下,如果不需要日志记录,您可以完全删除覆盖的 authenticate 方法。