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