Мне нужно получить текущего пользователя, когда сеанс аутентифицирован. Я реализовал сервис CurrentUserПочему восстановление не отправляет проверку подлинности событийСовершенствование при использовании ember-simple-auth?
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);
});
}
});
И я называю это в маршрут/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
называется, но когда сессия будет восстановлена в моем аутентификатор, событие не вызывается. Мне нужно вызвать его, потому что мне нужно перезагрузить пользовательскую информацию.
Если я сделаю это, я должен проверить каждый раз, когда пользователь открыть мое приложение, если сеанс аутентификации является то, что лучший путь? – EnriMR
Я скажу «да», но, честно говоря, я не могу придумать другой способ реализовать это. –
Он работает очень хорошо, я полагаю, что это единственный способ выполнить обновление текущей информации пользователя с помощью ember-simple-auth. Если вы хотите обновить свой ответ, я использую это, чтобы избежать вызова всегда, даже если ваш сеанс не аутентифицирован: 'beforeModel() { let accessToken = this.get ('session.data.authenticated.userToken'); if (this.get ('session.isAuthenticated') &&! Ember.isEmpty (accessToken)) { return this._loadCurrentUser(); } }, ' – EnriMR