2013-01-06 21 views

Odpowiedz

39
$http.defaults.headers.common['Auth-Token'] = 'token'; 

Wygląda na to, że headers() normalizuje nazwy klawiszy.

+3

Czy możesz wyjaśnić, co masz na myśli, normalizując kluczowe nazwy? – Webnet

+4

Podczas pobierania nagłówków za pomocą metody nagłówków() klucz "Auth-Token" staje się pisany małymi literami i staje się "auth-token". Co jest mylące. – lucassp

+0

@lucassp może to być - http://stackoverflow.com/questions/5258977/are-http-headers-case-sensitive – KrIsHnA

65

Można użyć domyślnych nagłówków kątowym 1.0.x:

$http.defaults.headers.common['Authentication'] = 'authentication'; 

przechwytujących lub prośba o kanciastych 1.1.x +:

myapp.factory('httpRequestInterceptor', function() { 
    return { 
    request: function (config) { 

     // use this to destroying other existing headers 
     config.headers = {'Authentication':'authentication'} 

     // use this to prevent destroying other existing headers 
     // config.headers['Authorization'] = 'authentication'; 

     return config; 
    } 
    }; 
}); 

myapp.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('httpRequestInterceptor'); 
}); 

Od Fabryki/usługi są samotnymi, to działa tak długo, jak długo nie trzeba dynamicznie zmieniać wartości "uwierzytelnienia" po utworzeniu usługi.

+0

Podoba mi się to jako usługa. Dzięki! – grant

+2

Trochę zagubiony. Jak mogę zintegrować to z moją aplikacją? Czy muszę wyświetlić listę jako zależność, a następnie użyć '$ httpProvider' zamiast' $ http'? –

+0

Wstaw $ httpProvider do metody konfiguracyjnej, która zawiesza się w module aplikacji. Dostawcy są sposobem konfigurowania usług, zanim zostaną wprowadzone przez Angular do kontrolerów itp. – Greg

1

dodanie do wyżej odpowiedziach @Guria i @Panga

config.headers['X-Access-Token'] = $window.sessionStorage.token; 

Można użyć x-access-żeton w nagłówku, jak JWT (jsonwebtoken). Przechowuję JWT w pamięci sesji, gdy użytkownik uwierzytelnia się po raz pierwszy.

Powiązane problemy