2017-05-25 24 views
0

私はファイルセッションを使用しており、ユーザーがログアウトしたときにキャプチャしようとしています。彼らがログアウトするためにボタンをクリックしたときではなく、ページがまだログインしたままになっているとき。私はログアウトのためのイベントリスナーをセットアップしましたが、それは起動しないようです。セッションログアウトが発生したときに、どのようにイベントをキャプチャまたは作成するかは誰にも分かります。Laravel 5.4セッションの非アクティブ状態からのログアウトイベント

Illuminate\Auth\Events\Logout' => ['App\Listeners\LogSuccessfulLogout',], 

答えて

0

セッションタイムアウトはクライアント側で発生するため、発生したことを検出できなくなります。

あなたができることは、各ユーザーのアクティビティログを保持し、各リクエストにそのユーザーのタイムスタンプを保存することです。セッションの有効期限が切れるのは、session.php Config::get('session.lifetime')のライフタイム変数をアクティビティテーブルの最新のタイムスタンプに追加し、それを現在の時刻と比較することで判断できます。

現在の時刻以上であれば、セッションの有効期限が切れていることがわかります。

ログインしたユーザーのリクエストごとに、最低でもuser_id列とtimestamp列を含むアクティビティ表を更新するグローバルミドルウェアをセットアップする必要があります。

次に、あなたのアクティビティテーブルから読み取り、session.phpの設定値を取得し、セッションが満了していると判断したユーザごとにユーザログアウトイベントを発生させる毎分実行するジョブを設定したいとします。 。それが始動すると、あなたの'App\Listeners\LogSuccessfulLogout'リスナーがそのイベントを開始するはずです。

関連する問題