首页 > 解决方案 > 检查用户是否在线 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()检查用户是否只为当前身份验证用户留在帐户中..

标签: phplaravel

解决方案


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

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/


推荐阅读