Si è scoperto che la versione di ember-simple-auth che stavo utilizzando non era aggiornata e che era necessario eseguire l'aggiornamento a 0.3.x (da 0.2.x). Da lì, sono stato in grado di aggiungere un autenticatore personalizzato che ho estratto quasi direttamente dai file di esempio del progetto. Si noti che sono in Ember 1.6.0 beta 2.
Con il codice qui sotto, posso accedere al currentUser nelle rotte e controller utilizzando this.get('session.currentUser')
o nei modelli con {{session.currentUser}}
.
L'unico cambiamento che dovevo apportare alla mia API era incluso lo user_id
con la risposta OAuth.
Aggiornamento dalla risposta precedente per sostenere 0.4.0
Poi ho aggiornato il mio inizializzazione di essere il seguente:
App.initializer({
name: 'authentication',
initialize: function(container, application) {
Ember.SimpleAuth.Authenticators.OAuth2.reopen({
serverTokenEndpoint: '/api/oauth/token'
});
Ember.SimpleAuth.Session.reopen({
currentUser: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return container.lookup('store:main').find('current-user', userId);
}
}.property('user_id')
});
Ember.SimpleAuth.setup(container, application, {
authorizerFactory: 'ember-simple-auth-authorizer:oauth2-bearer',
routeAfterAuthentication: 'main.dashboard'
});
}
});
mio controller di login ora assomiglia a questo:
export default Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin, {
authenticatorFactory: 'ember-simple-auth-authenticator:oauth2-password-grant'
});
fonte
2014-05-08 01:53:12
Questo è oro assoluto! Ho faticato a trovare un buon modo per farlo con ember-simple-auth per mesi. Questo dovrebbe davvero essere parte dei documenti (se non l'implementazione standard). – opsb
@opsb Ho appena aggiornato la mia risposta perché può essere ulteriormente semplificata dopo una recente versione di ember-simple-auth. L'autenticatore personalizzato non è più richiesto. –
bello, sembra più pulito. – opsb