Ruby on rails 如何在Rails/w designe中注销时使特定会话无效?
我想在用户使用Desive注销时使会话无效,在用户注销时我有一个回调来捕获,以便更好地防止会话劫持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
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=”#