[英]Laravel : Check if another user is currently logged in
我說的是帶有身份驗證系統的簡單 laravel 4.2 網站。
我是用戶 A(超級用戶),我想查看用戶 B 或/和用戶 C(以及所有其他用戶)是否已登錄。是否有任何內置功能(具有 Auth 類的功能)可以執行此操作?
您無法確定用戶 B/C 是否已登錄。但您可以猜測用戶是否已登錄。如果您記得用戶 B/C 的最后一個操作,並且您知道用戶注銷前的超時時間如果用戶仍然登錄或未登錄,這將自動為您提供估計值。
為您的用戶表添加遷移並向表中添加一個新字段
$table->timestamp('last_activity')->nullable();
添加前置過濾器
App::before(function ($request) {
if (Auth::user()) {
$user = Auth::user();
$now = new DateTime();
$user->last_activity = $now->getTimestamp();
$user->save();
}
});
現在您可以檢查用戶 B/C 的最后一次操作是什么時候,如果這在自動注銷時間內,則用戶可能仍在登錄。如果不是,則用戶肯定已注銷。
如果您想記錄用戶活動,有一個包Regulus343/ActivityLog 。
這很容易,但您一次只能檢查一個人,這意味着不可能使用復雜的條件,例如計算所有登錄用戶。 如果您想檢查您以外的用戶是否已登錄,請使用這樣的輔助函數。
<?php
// Helper.php
public function isLoggedIn($user_id)
{
if(Auth::check())
{
return $user_id == Auth::user()->id;
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.