2014-07-25 6 views
5

Ho un progetto in corso e sto utilizzando il lato server per gestire la mia autenticazione e autorizzazione tramite i cookie del dominio express/passport che tipo di auto- gestire magicamente lo stato inviando il sid cookie avanti e indietro.posso utilizzare ember-simple-auth con i cookie del dominio sessione espresso/passaporto

Non avevo costruito molto di una gestione di autenticazione sul client, stavo solo ottenendo i dati utente che esprimono come bootstrap per me nella vista server come un oggetto js globale. Volevo gestirlo meglio in ember, quindi ho iniziato a implementare ember-simple-auth e sono riuscito a gestire gli accessi, lo stato, ecc. Piuttosto bene, ma sembra che dipenda sempre da una strategia di token.

In questo momento il mio codice è simile a questo e come puoi vedere, devo risolvere una promessa con un oggetto token per farlo funzionare, ma la mia strategia desiderata non richiede token.

authenticate: function(credentials) { 
      var _this = this; 
      return new Ember.RSVP.Promise(function(resolve, reject) { 
       Ember.$.ajax({ 
        url: _this.tokenEndpoint, 
        type: 'POST', 
        data: JSON.stringify({ 
         email: credentials.identification, 
         password: credentials.password 
        }), 
        contentType: 'application/json' 
       }).then(function(response) { 

        Ember.run(function() { 
         resolve({ 
          token: response.session.token 
         }); 
        }); 
       }, function(xhr, status, error) { 
        var response = JSON.parse(xhr.responseText); 
        Ember.run(function() { 
         reject(response.error); 
        }); 
       }); 
      }); 
     }, 

La mia domanda è in grado di Ember-simple-auth essere adattato a lavorare con l'espresso/cookie di dominio passaporto o devo cambiare il mio server da utilizzare una strategia portatore o OAuth2 o qualcosa del genere.

Grazie.

risposta

4

Ember Simple Auth non richiede il token. Nella maggior parte dei casi, tuttavia, "authorizer" necessita di un token per iniettarlo nelle richieste che vengono inviate al server API (vedere qui: http://ember-simple-auth.simplabs.com/ember-simple-auth-api-docs.html#SimpleAuth-Authorizers-Base). Se si utilizzano i cookie, in realtà non è necessario un programma di autorizzazione, poiché il cookie verrà comunque inviato al server, consentendo in tal modo di identificare l'utente autenticato. In tal caso potresti semplicemente risolvere con ad es. { authenticated: true } dal metodo authenticate e controllare per quel valore nel metodo restore:

restore: function(data) { 
    return new Ember.RSVP.Promise(function(resolve, reject) { 
    if (data.authenticated) { 
     resolve(data); 
    } else { 
     reject(); 
    } 
    }); 
} 
+1

grazie Marco per la tua risposta e ottimo plugin. Ce l'ho fatta. Scriverò presto un tutorial. – mobetta

+4

@mobetta come sta andando il tutorial? :) – SuperUberDuper

+0

@mobetta qualche notizia sul tutorial? – charsi