0
세션이 인증 될 때 현재 사용자를 확보해야합니다. 나는 서비스 currentUserember-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
사용자 로그인 또는 가입, 이벤트authenticationSucceeded
가 호출
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();
}
});
하지만 세션이 복원되어 내 authenticator 이벤트가 호출되지 않습니다. 사용자 정보를 다시로드해야하기 때문에 전화해야합니다.
내가 세션이 인증되면 사용자가 내 응용 프로그램을 열 때마다 확인하는 것을해야한다는 것입니다 경우 가장 좋은 방법은? – EnriMR
나는 그렇다고 말할 것이다. 그러나 솔직히 말해서, 나는 이것을 구현하는 또 다른 방법을 생각할 수 없다. –
아주 잘 작동합니다. ember-simple-auth를 사용하여 현재 사용자 정보를 업데이트하는 유일한 방법이라고 생각합니다. 답변을 업데이트하고 싶다면 다음과 같이 세션을 인증하지 않아도 항상 전화하지 않아야합니다 :'beforeModel() { let accessToken = this.get ('session.data.authenticated.userToken'); if (this.get ('session.isAuthenticated') &&! Ember.isEmpty (accessToken)) { 이 this._loadCurrentUser()를 반환합니다; } },' – EnriMR