0

我在 rails 5.xx 上学习课程,当他们使用表单时,他们会在表单的开头添加一行用于令牌身份验证以保护他们的网站,如下所示:

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

但是要使用最新版本的 Rails,我使用的是 6.1.3 版本,我在网上看不到任何关于此的内容。所以问题是:我还需要在任何地方设置这个真实性令牌吗?如果是,在哪里?如果没有,为什么?如果你有一些关于 Rails 6 的链接,我不会拒绝。谢谢。

4

1 回答 1

1

不,您不需要手动添加,Rails 会在每个表单中为您完成。

<%= form_with do |form| %>
  Form contents
<% end %>

生成

<form accept-charset="UTF-8" action="/" method="post">
  <input name="authenticity_token" type="hidden" value="J7CBxfHalt49OSHp27hblqK20c9PgwJ108nDHX/8Cts=" />
  Form contents
</form>

您会注意到 HTML 包含一个类型为 hidden 的 input 元素。这个输入很重要,因为没有它就无法成功提交非 GET 表单。名为authenticity_token 的隐藏输入元素是Rails 的一个安全特性,称为跨站请求伪造保护,表单助手会为每个非GET 表单生成它(前提是启用此安全特性)。您可以在 Securing Rails Applications 指南中阅读更多相关信息。

https://guides.rubyonrails.org/form_helpers.html

于 2021-03-04T21:21:54.383 回答