2012-04-10 6 views
4

ユーザーのセッションがタイムアウトしたときに、deviseと: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 
関連する問題