php - 检查用户是否在线 laravel

标签 php laravel

我有列 last_activity,其中使用中间件写入最后一个事件用户的日期。我如何检查在线用户以及他何时退出?

中间件:

class LastActivityUser
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
  public function handle($request, Closure $next)
  {
    if (\Auth::check() && (\Auth::user()->last_activity < new \DateTime('-5 minutes'))) {
        $user = \Auth::user();
        $user->last_activity = new \DateTime;
        $user->timestamps = false;
        $user->save();
    }
    return $next($request);
  }
}

用户模型中的代码:
public function online() {
    return ($this->last_activity > new \DateTime('-5 minutes') && $user->check()) ? true : false;
}
$user->check => Auth::check() - 不工作。我不需要使用 Auth::check(),我需要在其他用户上显示在线用户.. 但是 Auth::check()检查用户是否仅保留当前身份验证用户的帐户。

最佳答案

您可以使用中间件来检查在线用户

if(Auth::check()) {
    $expiresAt = Carbon::now()->addMinutes(5);
    Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
}

并检查用户:
public function isOnline()
{
    return Cache::has('user-is-online-' . $this->id);
}

鉴于:
@if($user->isOnline())
    user is online!!
@endif

也许这份文件能帮到你:https://erikbelusic.com/tracking-if-a-user-is-online-in-laravel/

关于php - 检查用户是否在线 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075968/

相关文章:

php - 我更新了 wamp 服务器,laravel 项目出现错误([PDOException] 找不到驱动程序)?

php - 即使没有明显的冲突,Composer 也不会安装

php - 我如何在 laravel Eloquent 返回数组中使用 next() 或 current() ?

php - 使用 docker、nginx、php-fpm 提供静态文件

php - 在 PHP 中解析多字节字符串

php - CakePHP使用ajax删除

php - MYSQL 无法在不同的表上加载 OR 运算符

php - 在 foreach 语句中使用单选按钮时出错

laravel - 如何通过从 vuejs 组件获取数据在 Laravel Controller 中创建多行

javascript - 从前端表单限制 ACF 的 "acf/validate_save_post"操作