在什么情况下,form_authenticity_token与params:authenticity_token不匹配?
我看到未经验证的请求进入我的应用程序,所以我通过form_tag打印出一些调试信息。
form_auth_token: #{form_authenticity_token.inspect}
session_csrf_token: #{session['_csrf_token'].inspect}
params: #{params.inspect}我得到的输出显示,会话具有与form_auth_token匹配的适当令牌,但是提交的authenticity_token不匹配:
form_auth_token: "gckttsVeq2XvTBwQX3BaInWCivIhvR/mYBWjs119eb8="
session_csrf_token: "gckttsVeq2XvTBwQX3BaInWCivIhvR/mYBWjs119eb8="
params: {"utf8"=>"✓", "authenticity_token"=>"+5IINl7vEh1jJJwP+RiXXws+4kEwM3fpJsCOn+gZ0AA=" ...我认为,按照定义,params:authenticity_token将与form_authenticity_token相同。
发布于 2013-10-06 17:44:28
一些快速建议:如果您正在使用rails jquery助手,rails将在POST请求中从HTML文档的头部自动添加csrf-token元标记值。我会检查HTML的<head>标记中的值是什么,以确定它是否匹配。
https://stackoverflow.com/questions/17073363
复制相似问题