2016-08-18 1 views
0

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.

Antwort

2

Ich glaube nicht, dass die sessionAuthenticated bei Wiederherstellung ausgelöst wird. Sie müssen den Benutzer in Ihren beforeModel Hook laden.

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

Sie here den aktuellen Benutzer zum Einstellen einen Blick auf die offizielle Dokumentation nehmen

+0

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

+1

Ich werde ja sagen, aber um ehrlich zu sein, kann ich mir keinen anderen Weg vorstellen, dies zu implementieren. –

+0

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

Verwandte Themen