2014-12-09 11 views
5

Używam 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 i Ember Simple Auth Devise 0.7.2 dla mojego frontendu. Mój backend jest wspierany przez Rails, Grape i Devise.ember-simple-auth nie dodaje Token do każdego żądania

Teraz próbuję zbudować proste uwierzytelnianie. Logowanie działa świetnie: aplikacja Ember przesyła poświadczenia logowania do mojego interfejsu Rails API i odzyskuje token dostępu. Tokeny są zapisywane w localStorage, a ponowne ładowanie strony działa poprawnie. Ale o ile rozumiem Ember Simple Auth (see this demo), wszystkie przyszłe żądania AJAX będą wykonywane z tym tokenem jako nagłówek Authorization - ale tak nie jest.

Czy muszę samodzielnie skonfigurować urządzenie ajaxPrefilter, czy też Ember Simple Auth powinien to zrobić dla mnie i jest jakiś błąd w moim kodzie/Ember Simple Auth?

Aktualizacja 1

po prostu bawił się z pewnym console.log debugowania. Wygląda na to, że funkcja authorize nie zostanie zwolniona. Wszystkie inne funkcje mogą zostać pomyślnie zarejestrowane, z wyjątkiem authorize.

Aktualizacja 2

Problem rozwiązany: po prostu zapomniał ustawić crossOriginWhitelist.

enter image description here

Odpowiedz

5

Jak ESA 1,0 tokeny nie są automatycznie dodawane do każdego żądania.

Jeśli używasz Autoryzatora OAuth2 następnie dodanie informacji autoryzacji do żądań danych Ember to zrobić:

// 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' 
}); 

Jeśli też chcesz dokonać ręcznego wywołania JQuery wtedy coś takiego

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 
    }) 
    }); 
}); 

następnie zapewnia, że ​​informacje autoryzacyjne zostaną dodane do nagłówka.

Powyższy pochodzi z głównej tekstowych ze https://github.com/simplabs/ember-simple-auth i Docs API w http://ember-simple-auth.com/api/

Powiązane problemy