拉拉维尔 :检查其他用户当前是否已登录


Laravel : Check if another user is currently logged in

我说的是一个简单的带有身份验证系统的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;
        }
    }  
?>