Ruby on rails 如何在Rails/w designe中注销时使特定会话无效?

Ruby on rails 如何在Rails/w designe中注销时使特定会话无效?,ruby-on-rails,session,devise,Ruby On Rails,Session,Devise,我想在用户使用Desive注销时使会话无效,在用户注销时我有一个回调来捕获,以便更好地防止会话劫持 class ApplicationController < ActionController::Base def sign_out(*args) super(*args) reset_session end end class ApplicationControllercurrent_user.update_属性(:current_sign_in_token,”)N

我想在用户使用Desive注销时使会话无效,在用户注销时我有一个回调来捕获,以便更好地防止会话劫持

class ApplicationController < ActionController::Base
  def sign_out(*args)
    super(*args)
    reset_session
  end
end
class ApplicationController
我的理解是,这将删除存储在服务器端的会话信息,从而使其无效

但是,我仍然可以使用注销前获得的会话id登录。 我是否误解了它的工作原理?我只想使这个会话无效,不是所有会话都无效


我正在使用会话存储的默认设置。

经过一些谷歌搜索和思考后,我来到这里,可以根据我的需要进行修改

我所做的只是

应用程序\u controller.rb

  def sign_out(*args)
    current_user.update_attribute(:current_sign_in_token, "")
    super
  end

这将使登录令牌无效,从而使会话无效,因此劫持会话id仍会将您踢出。

您从哪里获得会话id
?另外,您还添加了哪些特定于会话的自定义代码?我的印象是重置会话不需要获取会话id,我没有添加任何会影响会话值的自定义代码。我猜该方法已被删除。我看到这个错误:[8]pry(#)>current_user.update_属性(:current_sign_in_token,”)NoMethodError:for的未定义方法“current_sign_in_token=”#