设计错误 - ActionController :: InvalidAuthenticityToken

时间:2016-09-27 12:53:59

标签: ruby-on-rails devise

在管理员和用户登录同一页面时,设计注销出现问题

例如,我在Chrome浏览器中以用户身份登录并在同一浏览器中以管理员身份登录,当我退出管理会话时,用户会话将自动注销并重定向到登录页面。
当我尝试以用户身份登录时,它已成功登录并进入管理员登录页面并尝试登录显示 -

ActionController::InvalidAuthenticityToken

1 个答案:

答案 0 :(得分:0)

我今天遇到了同样的问题。为了以防万一,我想分享一个我发现的解决方案。在设备仓库中阅读此问题后我得到了这个想法:https://github.com/plataformatec/devise/issues/3461

class Identities::SessionsController < Devise::SessionsController

  rescue_from ActionController::InvalidAuthenticityToken, with: :force_log_out

  #...

  def force_log_out
    return unless params[:action] == 'destroy'

    puts "rescued ActionController::InvalidAuthenticityToken"
    puts "force log out and redirect back to '/'"
    sign_out_all_scopes
    redirect_to '/'
  end

  # ...

我不知道这是否是最佳解决方案。如果有人有其他解决方案,我想学习它们。