使用ember-simple-auth时为什么还原不发送事件身份验证?

时间:2016-08-18 10:50:12

标签: ember.js ember-simple-auth

我需要在会话通过身份验证时获取当前用户。我已经实现了服务currentUser

import Ember from 'ember';

const { inject: { service }, isEmpty, RSVP } = Ember;

export default Ember.Service.extend({
  store: service(),
  user: null,

  load() {
    return this.get('store').find('user', 'me').then((user) => {
      this.set('user', user);
    });
  }
});

我在route / application.js中调用它

import Ember from 'ember';
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';

export default Ember.Route.extend(ApplicationRouteMixin, {
  session: Ember.inject.service(),
  currentUser: Ember.inject.service(),

  init: function(){
    return this._super();
  },

  actions: {
    invalidateSession() {
      this.get('session').invalidate();
    }
  },

  sessionAuthenticated() {
    alert("sessionAuthenticated");
    this._super(...arguments);
    this._loadCurrentUser().catch(() => this.get('session').invalidate());
  },

  _loadCurrentUser() {
    return this.get('currentUser').load();
  }

});

当用户登录或注册时,会调用事件authenticationSucceeded,但在我的身份验证器中恢复会话时,不会调用该事件。我需要调用它,因为我需要重新加载用户信息。

1 个答案:

答案 0 :(得分:2)

我不认为恢复时会触发sessionAuthenticated。您需要在beforeModel挂钩中加载用户。

// ...
beforeModel() {
  return this._loadCurrentUser();
}
// ...

您可以查看设置当前用户here

的官方文档