随机CSRF令牌真实性错误

时间:2014-05-27 04:24:26

标签: html ruby-on-rails ruby authentication csrf

我收到间歇性的CSRF令牌真实性错误。具体来说,当我通过POST提交常规表单时偶尔会发生这种情况。如果我在再次提交表单之前去其他几个随机页面,我可以通过此错误。这个错误并不总是出现,偶尔会出现。这让我觉得生成的csrf元标记可能并不总是有效。

我已在application.html.erb的标题中包含以下语句

<%= csrf_meta_tags %>

我在application_controller.rb

中也有以下内容
protect_from_forgery

还有什么我应该做的吗?

1 个答案:

答案 0 :(得分:1)

如果您使用Rails助手form_tagform_for来生成“常规表单”,那么您将看到是否检查HTML是否在表单标记下生成了额外的div,其中包含utf8合规性的隐藏字段和authenticity_token

如果您正在编写自己的表单(使用<form>...</form>%form),则需要手动添加真实性令牌。

您可以使用另一个名为form_authenticity_token的助手:

<input name="authenticity_token" type="hidden" value="<%= form_authenticity_token %>">

但我建议您使用Rails表单标记帮助程序,并避免添加自己的真实性标记字段。