2017-05-25 69 views
0

我正在使用文件會話並嘗試捕獲用戶註銷時。不是當他們點擊按鈕註銷,但當他們離開頁面仍然登錄。我有一個事件監聽器設置註銷,但似乎並沒有觸發。有沒有人知道如何在會話註銷發生時捕獲或創建事件。Laravel 5.4從會話不活動中註銷事件

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

回答

0

會話超時發生在客戶端,所以您將無法檢測到這種情況。

您可以做的最好的事情是保存每個用戶的活動日誌,並在每個請求上存儲該用戶的時間戳。然後,您可以通過將session.php Config::get('session.lifetime')中的生命期變量添加到活動表中的最新時間戳並將其與當前時間進行比較,從而確定哪些會話即將到期。

如果它大於或等於當前時間,那麼您知道他們的會話已過期。

您可能需要設置一個全局中間件,該中間件會在每次登錄用戶請求後更新您的活動表,其中至少包含user_id列和timestamp列。

然後,您需要設置一個每分鐘左右運行一次的作業,該作業從您的活動表中讀取,抓取session.php中的配置值,併爲其確定會話過期的每個用戶激發用戶註銷事件。當開始發射時,您的聽衆應該開始拾取該事件。