[英]Rails 5 devise_token_auth Can't verify CSRF token authenticity
我正在開發一個Rails 5 api項目,移動客戶端使用gem devise_token_auth
進行授權。
我清楚警告意味着什么。
第一個問題: 對於api(JSON / XML)響應 , CSRF保護應該關閉,對嗎?
我在網上搜索了一些似乎CSRF恰好發生在帶有cookie的web應用程序上。 但是我從rails api文件中讀到了這個:
重要的是要記住XML或JSON請求也會受到影響>如果您正在構建API,則應該在ApplicationController中更改偽造保護>方法(默認情況下::: exception):
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? }
不起作用?
不確定我是否理解錯誤。 謝謝!
代碼應該是:
protect_from_forgery with: :null_session, if: ->{request.format.json?}
您可能必須對API使用null_session
,它在請求期間提供空會話但不會完全重置它。 在以下情況下用作默認值:未指定選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.