2017-01-11 1 views
1

Ich benutze Gem Devise für Benutzerregistrierung und Auth. Alles funktioniert gut, wenn ich Web-Interface benutze. Aber ich möchte über API authentifizieren. So habe ich eine Anfrage und bekam einen FehlerWie authentifizieren Sie sich mit Rails und Devise über API?

#request 
curl -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/users/sign_in -d '{"user" : { "email" : "[email protected]", "password" : "r465ee"}}' 

#error 
Started POST "https://stackoverflow.com/users/sign_in" for ::1 at 2017-01-11 17:43:57 +0300 
Processing by Devise::SessionsController#create as JSON 
    Parameters: {"user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]"}, "session"=>{"user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]"}}} 
Can't verify CSRF token authenticity. 
Completed 422 Unprocessable Entity in 2ms (ActiveRecord: 0.0ms) 



ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken): 

Dann änderte ich application_controller.rb aber es half nicht.

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :null_session, if: ->{request.format.json?} 
end 

Antwort

0

protect_from_forgery with: :null_session, if: Proc.new { |c| c.request.format == 'application/json' } 
+0

Verarbeitung Versuchen von DeviseTokenAuth :: SessionsController # erstellen, wie JSON Parameter: { "user" => { "email" => "[email protected]", "Passwort" => "[FILTERED]"}, "session" => {"user" => {"email" => "[email protected]", "passwort" => "[FILTERED]"}}} Kann ' t Überprüfung der CSRF-Token-Authentizität. Unerlaubte Parameter: Benutzer, Sitzung –

+1

Dann könnte es völlig anderes Problem sein. Versuchen Sie, Ihre starken Parameter zu überprüfen und Benutzer- und Sitzungsparameter wie erlaubt einzurichten. – VAD

+0

Endlich habe ich die Anfrage geändert, indem ich 'user' lösche (curl -H 'Content-Type: application/json' -H 'Übernehmen: application/json' -X POST http: // localhost: 3000/api/v1/auth/sign_in -d '{"email": "[email protected]", "passwort": "r465eer465ee"}') –

Verwandte Themen