4

devise と を使用して、ユーザーのセッションがタイムアウトしたときに記録したいと思います:timeoutable

現時点で:timeoutableは、 は期待どおりに機能しており、指定された非アクティブ期間の後にユーザーをログイン ページにリダイレクトしていますが、これに加えて、タイムアウト期間を調整するために、これが発生したときにログに記録したいと考えています。

(もちろん、ユーザーが明示的にログアウトしない限り、すべてのセッションはタイムアウトします。前回のアクティビティからの時間を調べて、それが自然なタイムアウトなのか、それともタイムアウト期間が短すぎるために設定された結果である可能性が高いのかを判断します。)

フックできるイベント、または でセッション タイムアウトを検出する別の方法はありSessionControllerますか?

4

2 に答える 2

2

私はどんな種類のフックも見たことがありませんが、デバイスで使用されるタイムアウト可能なモジュールのコードをオーバーライドすることができます:

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
于 2012-04-10T20:40:48.440 に答える
0

あなたがする必要があるのは、ユーザーが明示的に「ログアウト」をクリックした時間を記録することだと思います。:timeoutableユーザー セッションが自動的に期限切れになるまでの既定の期間があるためです。

Sessions_Controllerから継承する を作成することで、ログの「ログアウト」アクティビティを実行できますDevise::SessionsController。現在時刻を記録したら、忘れずにsuper.

于 2012-04-10T16:09:13.993 に答える