我使用Laravel 5.8
身份验证和授权。
我有一个管理公司和工人的“管理员”。
管理员登录时,我想显示什么是新公司和新用户
自上次管理会话以来创建。为此,我想存储在
管理员会话结束并从数据库查询时的数据库时间
自上届会议以来创建的所有公司和工人。
如果管理员使用logout
,我可以在数据库中存储时间,但是如何
如果管理员仅关闭选项卡??,则存储时间
--------------*-
我创建了中间件来节省上一次请求的时间:
public function handle($request, Closure $next)
{
if(Auth::check()){
$id = Auth::id();
Admin::whereId($id)->update(['last_enter' => now("Europe/Moscow")]);
}
return $next($request);
}
答案 0 :(得分:1)
说起来,您可以将sendBeacon
与unload
事件一起使用来发送请求。我必须使用它来捕获用户花在观看视频上的时间,如果他们关闭了我需要录制的标签,则这种方法对我来说是一致的。
window.addEventListener('unload', function() {
navigator.sendBeacon('your-url',
JSON.stringify({})
);
}, false);
或者,您可以在用户关闭窗口的情况下,将注销时间设置为会话超时时间,例如:sign-in-time + session-timeout-time = logout-time
,但同样,这不是“准确”。
答案 1 :(得分:1)
由于您只想使用laravel进行归档,因此建议您检查middlewares
。您可以在中间件中传递请求,因此上一个请求意味着您是用户最后一次使用它。
Here,您可以了解有关laravel中的中间件的更多信息。