2017-01-11 19 views
1

私はユーザー登録と認証用に宝石Deviseを使用しています。私はWebインターフェイスを使用するとすべてがうまくいく。しかし、私はAPIを介して認証したい。だから、私はその後、私はapplication_controller.rbを変更したが、それは助けていない要求をしたし、エラーAPIを使用してRailsとDeviseで認証する方法は?

#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): 

を得ました。

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

答えて

0

JSON パラメータとして作成DeviseTokenAuth :: SessionsController#で

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

処理を試してみてください:{ "ユーザー" => { "電子メール" => "[email protected]"、 "パスワード" = "" [FILTERED] "}}}} メールアドレスを入力すると、 CSRFトークンの真正性を検証します。 許可されていないパラメータ:user、session –

+1

これは全く異なる問題です。あなたの強力なパラメータをチェックし、許可されているようにユーザーとセッションのパラメータを設定してみてください。 – VAD

+0

最後に、 'user'(curl -H 'Content-Type:application/json' -H 'Accept:application/json' -X POST http:// localhost:3000/api/v1/auth/sign_in -d '{"email": "[email protected]"、 "password": "r465eer465ee"}') –

関連する問題