Rails 5.2 ActionController :: InvalidAuthenticityToken

ard*_*igh 1 ruby-on-rails csrf

升级到Rails 5.2之后,我开始对应用程序中的所有表单都收到一个ActionController :: InvalidAuthenticityToken错误。我通过禁用所有形式的Turbolink来解决此问题,这种方法虽然有效,但不是很好的解决方案。

搜寻互联网,推荐的常见解决方案似乎是禁用protect_from_forgery

skip_before_action :verify_authenticity_token, raise: false

为什么我们需要禁用protect_from_forgery,而这不会产生安全漏洞?

编辑

csrf_meta_tags 在布局中。

在此处输入图片说明

Kar*_*nna 6

为Rails 5.2 default_protect_from_forgery默认启用ActionController::Base

如同一PR所述,要禁用它,您可以使用以下命令禁用它。

config.action_controller.default_protect_from_forgery = false
Run Code Online (Sandbox Code Playgroud)

参考文档

config.action_controller.default_protect_from_forgery确定是否在ActionController:Base上添加了伪造保护。默认情况下为false,但在加载Rails 5.2的默认值时启用。