Ich brauche den aktuellen Benutzer, wenn eine Sitzung authentifiziert wird. Ich habe den Dienst implementiert currentWarum wird bei der Verwendung von ember-simple-auth die EreignisauthentifizierungSucceeded nicht gesendet?
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);
});
}
});
Und ich nenne es in 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();
}
});
Wenn ein Benutzer Anmeldung oder eine Anmeldung, das Ereignis authenticationSucceeded
genannt wird, aber wenn die Sitzung wiederhergestellt ist in meinem Authenticator, das Ereignis wird nicht aufgerufen. Ich muss es anrufen, weil ich Benutzerinformationen neu laden muss.
Wenn ich das tue, ich jedes Mal zu überprüfen, dass ein Benutzer meine App öffnen, wenn die Sitzung authentifiziert wird, ist, dass der beste Weg? – EnriMR
Ich werde ja sagen, aber um ehrlich zu sein, kann ich mir keinen anderen Weg vorstellen, dies zu implementieren. –
Es funktioniert sehr gut, ich denke, das ist die einzige Möglichkeit, ein Update der aktuellen Benutzerinformationen mit Ember-Simple-Auth durchzuführen. Wenn Sie Ihre Antwort aktualisieren möchten, verwende ich dies, um den Aufruf immer zu vermeiden, auch wenn Ihre Sitzung nicht authentifiziert ist: 'beforeModel() { least accessToken = this.get ('session.data.authenticated.userToken'); if (this.get ('session.isAuthenticated') &&! Ember.isEmpty (accessToken)) { Rückgabe this._loadCurrentUser(); } }, ' – EnriMR