我知道有很多帖子与此错误相关但仍然......
我在登录/注册设计时遇到以下错误。 (2天后,它能够很好地演唱/上演。)
Feb 02 22:16:12 myapp app/web.1: Processing by Devise::SessionsController#create as HTML
Feb 02 22:16:12 myapp app/web.1: Parameters: {"utf8"=>"✓", "authenticity_token"=>"d0R529vsmCovMKZk1RC9ioxfVHivvVGKxPFvNkEUqVId08qPMDRN0lu9yULIAaTJR+p1oOXyg8QsE+PdZx4CHg==", "user"=>{"app_name"=>"tempo", "email"=>"xyz@vision.com", "password"=>"[FILTERED]"}, "commit"=>"submit"}
Feb 02 22:16:12 myapp app/web.1: Can't verify CSRF token authenticity
Feb 02 22:16:12 myapp app/web.1: ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
Feb 02 22:16:12 myapp app/web.1: vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/request_forgery_protection.rb:181:in `handle_unverified_request'
Feb 02 22:16:12 myapp app/web.1: vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/request_forgery_protection.rb:209:in `handle_unverified_request'
Feb 02 22:16:12 myapp app/web.1: vendor/bundle/ruby/2.2.0/gems/devise-3.5.6/lib/devise/controllers/helpers.rb:257:in `handle_unverified_request'
Feb 02 22:16:12 myapp app/web.1: vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.1/lib/action_controller/metal/request_forgery_protection.rb:204:in `verify_authenticity_token'
我收到了Heroku上托管的生产应用程序的错误。
我有一个临时应用程序(也在heroku上托管并且具有相同的代码库)并且它运行正常。
我可以登录并注册。
我已经提到了以下链接但是遇到了同样的问题
Rails facebook app returns 422 " the change u wanted was rejected" error
devise user sign_in gives authentication error for CSRF token authenticity token
rails - "WARNING: Can't verify CSRF token authenticity" for json devise requests
https://github.com/plataformatec/devise/issues/2734
我正在使用rails 4。
修改
我已经厌倦了以下解决方案
protect_from_forgery
csrf_meta_tags
,并且它存在。authenticity_token
。您可以在日志跟踪中找到我提交的表单详细信息。在应用程序控制器中添加了以下内容
skip_before_filter:verify_authenticity_token,if :: devise_controller?
答案 0 :(得分:2)
这是网络问题。我们的网络管理员对防火墙进行了一些更改,这就是导致问题的原因。它也影响其他网站
答案 1 :(得分:1)
这可能是一些事情......
<强> 1。您忘了在布局文件中添加<%= csrf_meta_tags %>
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
<强> 2。您需要将protect_from_forgery设置为以下内容:
简单地声明protect_from_forgery而不使用:with参数将默认使用:null_session:
protect_from_forgery # Same as above
第3。 Devise的作者建议在引发此异常的特定控制器操作上禁用protect_from_forgery:
# app/controllers/users/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
skip_before_filter :verify_authenticity_token, :only => :create
end
<强> 4。您需要在表单中添加以下行
<%= hidden_field_tag :authenticity_token, form_authenticity_token -%>