【问题标题】:Devis logout error ActionController::InvalidAuthenticityTokenon logoutDevis 注销错误 ActionController::InvalidAuthenticityTokenon 注销
【发布时间】:2021-08-19 06:50:26
【问题描述】:

使用 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):

注意: 标签已经存在于 应用。

【问题讨论】:

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


    【解决方案1】:

    在您的application_controller.rb 中有一个before_action :authenticate_user! 应该可以解决问题。

    # application_controller.rb
    class ApplicationController < ActionController::Base
    
      before_action :authenticate_user!
      
      ...
      ...
    end
    

    【讨论】:

    • 有页面要显示,应用中无需登录。
    • @vidurpunj 您可以使用skip_before_action :authenticate_user! 来执行相应控制器中的这些操作。
    • @vidurpunj 一般来说,我们只有几个页面需要在没有登录的情况下显示,所以最好在application_controller 中有authenticate_user! 并跳过相应控制器中的非登录路由。
    猜你喜欢
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2016-03-09
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多