我说的是一个简单的带有身份验证系统的laravel's 4.2网站。
我是用户 A(超级用户),我想查看用户 B 或/和用户 C(以及所有其他用户)是否已登录。是否有任何内置函数(带有身份验证类的东西)来执行此操作?
您无法确定用户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;
}
}
?>