2016-12-06 138 views
2

作爲管理員我想從應用程序註銷特定用戶。註銷特定用戶由管理員Laravel 5.2

我試過下面的代碼讓用戶從應用程序註銷。

Auth::logout(); 

但不是註銷該特定用戶,它使管理員註銷。 我從服務器獲取會話ID,現在我很困惑如何通過該會話ID來清除特定用戶會話,以便特定用戶註銷。

+0

你通常不能這樣做,但這取決於你如何保存用戶的會話。您可以通過從服務器的會話存儲中刪除來使用戶的會話無效。可能需要一段時間才能確定哪個會話屬於您想要註銷的用戶。 – josephting

回答

0

你不能這麼做,因爲所有的Auth:logout都是刪除會話cookie。

當然,您不能訪問其他用戶的cookies。

根據您的會話驅動程序,您可能會使會話服務器端無效。

例如,如果駕駛員數據庫,它可以作爲一個DB查詢刪除會話ID一樣簡單(但遠,你必須分析所有會話的有效載荷,以找到正確的用戶ID)

一種更簡單的方法是將session_token字段添加到用戶表中。在登錄時,您會生成一個隨機值並將其存儲在會話和數據庫中。然後在中間件中,檢查數據庫的session_token與會話中的session_token是否匹配。

要註銷用戶,只需在數據庫中重置令牌,然後我們開始吧!

1

可能像這樣可以幫助你。 讓我知道

$userToLogout = User::find(1); // Any userId you want to logout 
Auth::setUser($userToLogout); 
Auth::logout(); 
0

您可以在用戶表中創建一個新列名爲force_logout例如。然後在每個請求中(在您的身份驗證中間件中),檢查這個force_logout。然後你可以用Auth::logout();註銷用戶,如果force_logout1

所以如果你想記錄任何用戶,你只需要的用戶1