我正在使用Devise进行身份验证。当我们按如下所示启用超时模块时,会启用会话超时功能。
class User < ApplicationRecord
# Include default devise modules. Others available are:
devise :database_authenticatable, :registerable, :timeoutable
end
我正在编写一个简单的多人房间逻辑,所以我有一个房间列表,显示房间列表以及当前居住在每个房间的用户。我的目标是,一旦某个用户的会话由于不活动而过期,就应该检测到该事件,并且应该执行从该房间清除用户的代码。总之,我想知道是否有可能检测到会话超时并在发生这种情况时执行代码?
我感谢任何帮助!谢谢!
答案 0 :(得分:0)
我想你最好的选择是看看这个问题:
Detect when a devise session expires
它们覆盖timeoutable
方法并实现自己的代码:
module Devise
module Models
module Timeoutable
def timedout?(last_access)
# your custom code goes into this method
return false if remember_exists_and_not_expired?
!timeout_in.nil? && last_access && last_access <= timeout_in.ago
end
end
end
end