4

以前我使用了一个 gem,它提供了一个控制器来接受外部服务来将一些数据发布到我们的应用程序中。但是在 Rails 5.2 中它停止了工作。当端点被触发时,它会引发ActionController::InvalidAuthenticityToken错误。

4

2 回答 2

7

对于 5.2 之前的 Rails,生成的 ApplicationController 将调用protect_from_forgery,这意味着检查 POST、PUT、DELETE 操作的真实性。

新的 Rails 5.2 项目将默认检查ActionController::Base的任何子类的真实性令牌,这会影响许多现有的 Gem。

您可以等待 gem 更新以兼容 5.2。

或者,您可以在初始化程序中修改这些控制器:

require 'foo_controller'
class FooController < ActionController::Base
  skip_before_action :verify_authenticity_token, raise: false
end
于 2018-02-13T08:08:19.550 回答
1

我在登出链接中使用 destroy_user_session_path 也遇到了这个问题。我比较了我的旧应用程序(rails 5.1.x)和这个新建的 rails 5.2.0,我注意到我的布局没有csrf_meta_tags标签。

添加后

= csrf_meta_tags

有效!HTH

ruby '2.3.5' gem 'rails', '~> 5.2.0'

于 2018-05-16T14:54:10.550 回答