2012-04-10 33 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