3

在什么情况下 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 匹配的正确令牌,但提交的参数authentity_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 相同。

  1. 我是否以错误的方式调试?
  2. 这可能是什么原因造成的?
4

1 回答 1

0

一些快速建议:如果您使用 rails jquery 帮助程序,rails 会自动在 POST 请求中添加 HTML 文档头部的 csrf-token 元标记值。我会检查<head>您的 HTML 文档标签中的值是否匹配。

于 2013-10-06T17:44:28.453 回答