2012-04-10 79 views
4

我想记录用户会话何时超时,使用设计和:timeoutable检测设计会话何时到期

目前,:timeoutable按预期工作,并在指定的闲置时间段后将用户重定向到登录页面,但除此之外,我们希望在发生此情况时记录以帮助完善我们的超时时间。

(显然,所有会话将超时,除非用户明确地登出。我们将检查的时间,因为最后一项活动,以确定它是否是一个自然的超时或更可能是我们设定过短的超时周期的结果。 )

SessionController中是否有可以挂入事件或检测会话超时的其他方式?

回答

0

我认为你需要做的就是记录用户明确点击“注销”的时间。因为:timeoutable有一个默认时间段,用户会话将在该时间段后自动过期。

您可以通过创建从Devise::SessionsController继承的Sessions_Controller来执行日志“注销”活动。记录当前时间后,不要忘记做super

1

我还没有看到任何一种挂钩的,但你可以只覆盖所使用的设计出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