2014-12-09 12 views
5

Sto usando Ember 1.8.1, Ember Data 1.0.0-beta.12, Handlebars 1.3.0, jQuery 1.11.1, Ember Simple Auth 0.7. 2 e Ember Simple Auth Devise 0.7.2 per il mio frontend. Il mio back-end è supportato da Rails, Grape e Devise.ember-simple-auth non aggiunge token ad ogni richiesta

Ora sto provando a creare un'autenticazione semplice. Il login funziona alla grande: l'app Ember invia le credenziali di accesso alla mia API Rails e ottiene un token di accesso. I token sono scritti sul localStorage e ricaricare la pagina funziona bene. Ma per quanto comprendo Ember Simple Auth (see this demo), tutte le future richieste AJAX verranno eseguite con questo token come intestazione Authorization - ma non è questo il caso.

Devo impostare uno ajaxPrefilter da solo o Ember Simple Auth lo fa per me e c'è qualche bug nel mio codice/Ember Simple Auth?

Aggiornamento 1

Ho appena giocato in giro con qualche console.log debug. Sembra che la funzione authorize non venga attivata. Tutte le altre funzioni potrebbero essere registrate correttamente, eccetto authorize.

Aggiornamento 2

Problema risolto: solo dimenticato di impostare crossOriginWhitelist.

enter image description here

risposta

5

Come di ESA 1.0 gettoni non vengono aggiunti automaticamente ad ogni richiesta.

Se si utilizza l'Authorizer OAuth2 poi aggiungere informazioni sulle abilitazioni richieste di dati Ember fare questo:

// app/adapters/application.js 
import DS from 'ember-data'; 
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin'; 

export default DS.JSONAPIAdapter.extend(DataAdapterMixin, { 
    authorizer: 'authorizer:some' 
}); 

Se anche si desidera effettuare una chiamata JQuery manuale, allora qualcosa di simile

this.get('session').authorize('authorizer:oauth2', (headerName, headerValue) => { 
    Ember.$.ajax({ 
    url: myUrl, 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader(headerName, headerValue); 
    }, 
    method: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: JSON.stringify({ 
     // stuff 
    }) 
    }); 
}); 

quindi assicura che le informazioni di autorizzazione vengano aggiunte all'intestazione.

Quanto sopra viene dal readme principale https://github.com/simplabs/ember-simple-auth, e la documentazione API a http://ember-simple-auth.com/api/