以前我使用过gem,它提供了一个控制器来接受外部服务,将一些数据发送到我们的应用程序中。但是在Rails 5.2中它停止了工作。触发端点时,会引发ActionController::InvalidAuthenticityToken
错误。
答案 0 :(得分:4)
对于5.2之前的Rails,生成的ApplicationController将调用protect_from_forgery
,这意味着会检查POST,PUT,DELETE操作的真实性。
新的Rails 5.2项目将改为by default check authenticity token for any subclass of ActionController::Base,这会影响许多现有的Gems。
您可以等待gem更新以与5.2兼容。
或者,您可以在初始化程序中修补这些控制器:
require 'foo_controller'
class FooController < ActionController::Base
skip_before_action :verify_authenticity_token, raise: false
end
答案 1 :(得分:1)
我在登出链接中使用destroy_user_session_path也遇到了这个问题。我将我的旧应用程序(rails 5.1.x)与新构建的rails 5.2.0进行了比较,我注意到我的布局标签中没有csrf_meta_tags
。
添加
后 = csrf_meta_tags
ruby '2.3.5'
gem 'rails', '~> 5.2.0'