我正在开发一个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