2015-05-09 6 views
8

Mam teraz całkiem niezobowiązującą aplikację używającą ng-token-auth i szyn "devise-token-auth. Działa poprawnie, a metody $ auth działają dobrze (na przykład logowanie). Jednak po odświeżeniu strony, access-token nie jest trwałe i nie jest zapisywane do pliku cookie za pomocą ipCookie.ng-token-auth nie utrzymuje się na stałe

Moja szyny app przekazuje odpowiednie nagłówki, jak widać poniżej:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:GET, POST, DELETE, PUT, OPTIONS, HEAD 
Access-Control-Allow-Origin:http://localhost 
Access-Control-Expose-Headers: 
Access-Control-Max-Age:0 
access-token:XXXXXXXXXXXXXX 
Cache-Control:max-age=0, private, must-revalidate 
client:nYMXLxnuO7BIGZkdXkZ_Xg 
Connection:Keep-Alive 
Content-Type:application/json; charset=utf-8 
Date:Sat, 09 May 2015 21:41:56 GMT 
ETag:"c16291f5079691a2528d5a7876627ede" 
expiry:1431294116 
Keep-Alive:timeout=5, max=99 
Server:Apache/2.4.10 (Unix) PHP/5.5.20 
token-type:Bearer 
Transfer-Encoding:chunked 
uid:[email protected] 
Vary:Origin 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Request-Id:2b224904-944c-48f7-aa4e-d0407e26e893 
X-Runtime:0.230242 
X-XSS-Protection:1; mode=block 

Ale kiedy robi się uruchomić poprzez metody ng-token-auth nagłówkach updateHeadersFromResponse wracają null-- specjalnie w liniach 588 ng-token- auth.js

updateHeadersFromResponse = function($auth, resp) { 
    var key, newHeaders, val, _ref; 
    newHeaders = {}; 
    _ref = $auth.getConfig().tokenFormat; 
    for (key in _ref) { 
    val = _ref[key]; 
    if (resp.headers(key)) { 
     newHeaders[key] = resp.headers(key); 
    } 
    } 
    if (tokenIsCurrent($auth, newHeaders)) { 
    return $auth.setAuthHeaders(newHeaders); 
    } 
}; 

Czy ktoś to napotkał? Dlaczego nagłówek nie został przekazany do tej metody $httpProvider?

Odpowiedz

13

Znalazłem odpowiedź w tym poście Angular.js saying custom HTTP response header is null

używałem konfiguracji multi-domeny domena API tak potrzebne, aby mieć kilka dodatkowych narażonych nagłówki w konfiguracji Cors. Więc w gem Rails Cors dodałem dodatkową wartość narażoną na token dostępu:

config.middleware.insert_before 0, "Rack::Cors" do 
    allow do 
    origins 'api.com' 

    resource '*', 
     :headers => :any, 
     :methods => [:get, :post, :delete, :put, :options, :head], 
     :expose => ['access-token', 'expiry', 'token-type', 'uid', 'client'], 
     :max_age => 0 
    end 
end 

UPDATE: Exposed wszystkich pól wymaganych przez kątowe, nie tylko jeden z nich, które sprawiły, że działa.

+0

Tak, tak, tak !! Przez kilka dni szukałem w internecie i to w końcu udało się. –

+0

Cieszę się, że to zadziałało;) –

+0

Dwa słowa: LIFE SAVER! – Simon