我正在開發一個Rails 5 api項目,移動客戶端使用此項目進行授權,授權爲gem devise_token_auth
。Rails 5 devise_token_auth無法驗證CSRF令牌的真實性
我很清楚警告的含義。
1號問題:CSRF保護應該被關閉的API(JSON/XML)響應,是否正確?
我在網上搜索了一些似乎CSRF只發生在使用cookie的web應用程序上。
要記住,XML或JSON請求也受到影響是很重要的>,如果你正在構建的API,你應該改變默認防僞保護>方法的ApplicationController(:::例外,但我從rails api documen噸閱讀本):
class ApplicationController < ActionController::Base protect_from_forgery unless: -> { request.format.json? } end
所以我還是加入這樣得到警告:
class ApplicationController < ActionController::Base
protect_from_forgery unless: -> { request.format.json? }
include DeviseTokenAuth::Concerns::SetUserByToken
end
第二個問題:如果API並不需要CSRF保護,爲什麼
protect_from_forgery unless: -> { request.format.json? }
不起作用?
不知道我是否理解錯誤。謝謝!
謝謝託比!編輯。 – Nathan