簡體   English   中英

Rails 5 devise_token_auth無法驗證CSRF令牌的真實性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM