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/
推荐阅读
- linux - 在 linux 可执行文件编译中添加库
- android - Error while writing phone-callLogs in android
- java - Bean 名称“flightSearch”的 BindingResult 和普通目标对象都不能用作请求属性
- swift - 将 Swift 表单发送到 http 服务器
- firebase - 使用 React Native Firebase 将自定义参数设置为 screen_view 事件
- laravel - Laravel:如何维护同一页面的不同会话?
- flutter - 我想阅读完整下载的txt文件
- java - 来自另一个项目时不显示终端输出
- android - 如何在 pushNotification react-native 中设置用户定义时间
- python - 多个 numpy 2d 数组的元素乘法