2015-05-09 16 views
8

Al momento ho un'applicazione per ossa nude utilizzando ng-token-auth e le barre 'devise-token-auth. Funziona correttamente e i metodi $ auth funzionano bene (ad esempio, l'accesso). Tuttavia, all'aggiornamento della pagina lo access-token non persiste e non viene scritto sul cookie utilizzando ipCookie.ng-token-auth non persistente

La mia applicazione Rails sta inoltrando le intestazioni appropriate come si vede qui sotto:

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 

Ma quando si viene gestito attraverso il metodo della ng-token-auth intestazioni updateHeadersFromResponse stanno tornando null-- specificamente in linee 588 di 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); 
    } 
}; 

Qualcuno ha riscontrato questo? Perché l'intestazione non deve essere passata a questo metodo $httpProvider?

risposta

13

ho trovato la risposta in questo post Angular.js saying custom HTTP response header is null

stavo usando una configurazione multi-dominio in modo che il dominio API bisogno di avere alcune intestazioni esposti aggiuntive nella configurazione CORS. Così nel rotaie-cors gemma ho aggiunto un ulteriore valore esposto per l'accesso-token:

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 tutti i campi richiesti dalla angolari, non uno solo quelli che ha reso il lavoro.

+0

Sì, sì sì !! Ho cercato su Internet per giorni e questo finalmente l'ha fatto. –

+0

Felice di sentirlo funzionare;) –

+0

Due parole: LIFE SAVER! – Simon