setuserbytoken docs devisetokenauth concerns auth javascript ruby-on-rails angularjs authentication devise

javascript - docs - ng-token-auth no persiste



devise>- token auth (1)

Tengo una aplicación muy básica en este momento usando ng-token-auth y carriles '' devise-token-auth . Está funcionando bien y los métodos $ auth están funcionando bien (por ejemplo, iniciando sesión). Sin embargo, al actualizar la página, el access-token no se conserva y no se escribe en la cookie con ipCookie.

La aplicación My rails está reenviando los encabezados adecuados como se ve a continuación:

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

Pero cuando se ejecuta a través del método updateHeadersFromResponse de ng-token-auth los encabezados devuelven null-- específicamente en las líneas 588 de 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); } };

¿Alguien ha encontrado esto? ¿Por qué no se pasaría el encabezado a este método $httpProvider ?


Encontré la respuesta en esta publicación de Angular.js diciendo que el encabezado de respuesta HTTP personalizado es nulo

Estaba usando una configuración de varios dominios, por lo que el dominio de la API necesitaba tener algunos encabezados adicionales expuestos en la configuración de CORS. Entonces en la gema rails-cors agregué un valor expuesto adicional para el token de acceso:

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

ACTUALIZACIÓN: Expuse todos los campos requeridos por angular, no solo uno que lo hizo funcionar.