我有一列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()
检查用户是否仅保留当前授权用户的帐户。
4条答案
按热度按时间bhmjp9jg1#
你可以使用中间件来检查在线用户
检查用户:
鉴于:
也许这篇文章可以帮助你:https://erikbelusic.com/tracking-if-a-user-is-online-in-laravel/
r6l8ljro2#
ui7jx7zq3#
你可以使用下面的软件包来获取在线用户的列表或确定用户是否在线。
https://github.com/shetabit/visitor
gpnt7bae4#
1.创建中间件ActivityByUser 2)在ActivityByUser中间件中
class ActivityByUser { public function handle($request,Closure $next){ if(Auth::check()){ $expiresAt = Carbon::now()->addMinutes(1);//保持在线1分钟Cache::put('user-is-online-' . auth.js()->id,true,$expiresAt);// last seen User::where('id ',Auth::user()->id)->update(['last_seen' =>(new \DateTime())->format(“Y-m-d H:i:s”)]);} return $next($request);{\fnSimHei\bord1\shad1\pos(200,288)}
3)在Kernel.php中。
4)创建控制器:
5)检查刀片文件中的联机状态