1

J'ai un backend de rails 4 utilisant DeviseTokenAuth et un frontend AngularJS utilisant ngTokenAuth.
Lorsque le frontend et le backend sont déployés sur le même domaine, l'authentification fonctionne parfaitement. Lors du test sur localhost, avec le backend et le frontend s'exécutant sur localhost sur deux ports différents, la requête sign_in se termine par 200 OK mais la réponse ne contient pas l'en-tête Set-Cookie et le client reste donc non authentifié pour les opérations suivantes demandes Ici, vous pouvez voir une copie des en-têtes reçus dans la réponse sign_in dans les deux scénarios.
Le problème est le même également si j'essaye de m'authentifier à partir d'un frontend s'exécutant localement vers le backend de RAILS déployé sur le serveur. Les en-têtes CORS sont configurés comme celui-ci sur le serveur et tout me semble bien à propos de l'origine croisée:Le jeton d'authentification ne retourne pas l'en-tête Set-Cookie sur un autre domaine

config.middleware.insert_before 0, "Rack::Cors" do 
    allow do 
    origins '*' 
    resource '*', :headers => :any, :methods => [:get, :post, :options] 
    end 
end 

Déployé sur le serveur

Accept-Ranges:bytes 
Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:GET, POST, OPTIONS 
Access-Control-Allow-Origin:example.org 
Access-Control-Expose-Headers: 
Access-Control-Max-Age:1728000 
access-token:XXXXXXXXXXOI9s2x0IuVMA 
Age:0 
Cache-Control:max-age=0, private, must-revalidate 
client:XXXXXXXXXXAP2TsoBZTnjg 
Connection:keep-alive 
Content-Type:application/json; charset=utf-8 
Date:Thu, 04 May 2017 09:28:17 GMT 
ETag:W/"XXXXXXXXXXc86bb292d476d2366d3742" 
expiry:1495099697 
Server:nginx/1.10.0 (Ubuntu) 
Set-Cookie:_differenthood_session=ZE1NWndTUUVmMkNDbWRWckNNbkpKdWh6SVdaVTFlaGN6XXXXXXXXXXcrb2EzSGd3SFQvN2h3Z2IxOE9BMVYrTjV6YmsvRXpWNmN4T213R2V3MEJ1WWc9PS0tbU01Ymt6YkdOc0VIUTFCK1NUVFlMZz09--861a3aebd1d79f224d9ad810a88e5d5f23e114c0; path=/; HttpOnly 
token-type:Bearer 
Transfer-Encoding:chunked 
uid:[email protected] 
Vary:Origin 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Request-Id:c935b76c-d173-48ce-b21c-5e694845148b 
X-Runtime:0.629113 
X-XSS-Protection:1; mode=block 

Test sur localhost

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:GET, POST, OPTIONS 
Access-Control-Allow-Origin:http://localhost:9000 
Access-Control-Expose-Headers: 
Access-Control-Max-Age:1728000 
Access-Token:XXXXXXXXXXXAiR5CQmwYpQ 
Cache-Control:max-age=0, private, must-revalidate 
Client:XXXXXXXXXXq2UC7GXE0qbw 
Connection:Keep-Alive 
Content-Length:418 
Content-Type:application/json; charset=utf-8 
Date:Thu, 04 May 2017 09:27:20 GMT 
Etag:W/"XXXXXXXXXX37381b8c1637b2ea1bba96" 
Expiry:1495099640 
Server:WEBrick/1.3.1 (Ruby/2.2.6/2016-11-15) 
Token-Type:Bearer 
Uid:[email protected] 
Vary:Origin 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Request-Id:3ef1f652-b29f-4fe7-bbb9-3de47f1acddf 
X-Runtime:0.653264 
X-Xss-Protection:1; mode=block 

Répondre

0

Nevermind désolé. J'ai lu la documentation plus en profondeur (https://github.com/lynndylanhurley/devise_token_auth#cors) et trouvé la configuration CORS suggérée qui a résolu le problème pour moi.
En ajoutant:

:expose => ['access-token', 'expiry', 'token-type', 'uid', 'client'], 

à la configuration CORS affichée dans la question, le problème est résolu.