检测设计会话何时到期
问题描述:
我想记录用户会话何时超时,使用设计和:timeoutable
。检测设计会话何时到期
目前,:timeoutable
按预期工作,并在指定的闲置时间段后将用户重定向到登录页面,但除此之外,我们希望在发生此情况时记录以帮助完善我们的超时时间。
(显然,所有会话将超时,除非用户明确地登出。我们将检查的时间,因为最后一项活动,以确定它是否是一个自然的超时或更可能是我们设定过短的超时周期的结果。 )
在SessionController
中是否有可以挂入事件或检测会话超时的其他方式?
答
我认为你需要做的就是记录用户明确点击“注销”的时间。因为:timeoutable
有一个默认时间段,用户会话将在该时间段后自动过期。
您可以通过创建从Devise::SessionsController
继承的Sessions_Controller
来执行日志“注销”活动。记录当前时间后,不要忘记做super
。
答
我还没有看到任何一种挂钩的,但你可以只覆盖所使用的设计出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