首页 > 解决方案 > Devis 注销错误 ActionController::InvalidAuthenticityTokenon 注销

问题描述

使用 Rails 6.0.3.6、ruby 2.7.2p137 和设计(4.7.3)。

当用户调用注销时,如果它是正常情况,它会很好地工作。但是相同的注销在条件下会出现错误:

  1. 如果用户已打开 2 个选项卡并从第一个选项卡注销并尝试从第二个选项卡注销,则会出现错误。

  2. 如果用户注销并单击浏览器后退按钮,然后再次单击注销按钮,则会再次导致错误。

请建议在项目中编码的过程,通过该过程用户被重定向到主路径,说明用户已经退出而不是给出错误。

Can't verify CSRF token authenticity.
Completed 422 Unprocessable Entity in 5ms (ActiveRecord: 0.5ms | Allocations: 3332)
  
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

注意: <%= csrf_meta_tags %> 标签已经存在于应用程序的布局中。

标签: ruby-on-railsrubydeviseruby-on-rails-6ruby-2.0

解决方案


有一个before_action :authenticate_user!在你application_controller.rb应该解决这个问题。

# application_controller.rb
class ApplicationController < ActionController::Base

  before_action :authenticate_user!
  
  ...
  ...
end

推荐阅读