首页 > 解决方案 > Rails 5.2 ActionController::InvalidAuthenticityToken

问题描述

升级到 Rails 5.2 后,我的应用程序中的所有表单都开始出现ActionController::InvalidAuthenticityToken错误。我通过禁用所有表单的 Turbolinks 来解决这个问题,这可行但不是一个很好的解决方案。

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

skip_before_action :verify_authenticity_token, raise: false

为什么我们需要禁用protect_from_forgery,这不会造成安全漏洞吗?

编辑

csrf_meta_tags在布局中。

在此处输入图像描述

标签: ruby-on-railscsrf

解决方案


对于 Rails 5.2 ,默认情况default_protect_from_forgery下启用.ActionController::Base

您可以使用PR中解释的以下语法禁用它。

config.action_controller.default_protect_from_forgery = false

来自文档的参考:

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


推荐阅读