【发布时间】:2016-12-29 20:01:57
【问题描述】:
我正在开发一个 Rails 5 api 项目,该项目由带有 gem devise_token_auth 的移动客户端用于授权。
我很清楚警告的含义。
第一个问题: 应该为 api(JSON/XML)respond 关闭 CSRF 保护,对吗?
我在网上搜索了一些,似乎 CSRF 只是发生在带有 cookie 的网络应用程序上。但我是从rails api document 读到的:
请务必记住,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? }
没有用?
不确定我是否理解错误。谢谢!
【问题讨论】:
标签: ruby-on-rails csrf-protection