为什么在使用 ember-simple-auth 时 restore 不发送事件 authenticationSucceeded?
Why restore doesn't send event authenticationSucceeded when using 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
被调用,但当会话在我的身份验证器中恢复时,事件没有被调用。我需要调用它,因为我需要重新加载用户信息。
我认为 sessionAuthenticated
不会在恢复时触发。您需要在 beforeModel
挂钩中加载用户。
// ...
beforeModel() {
return this._loadCurrentUser();
}
// ...
你可以看看官方文档设置当前用户here
我需要在会话通过身份验证时获取当前用户。我已经实现了服务 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
被调用,但当会话在我的身份验证器中恢复时,事件没有被调用。我需要调用它,因为我需要重新加载用户信息。
我认为 sessionAuthenticated
不会在恢复时触发。您需要在 beforeModel
挂钩中加载用户。
// ...
beforeModel() {
return this._loadCurrentUser();
}
// ...
你可以看看官方文档设置当前用户here