javascript - 如何实现一个,以便用户可以通过最多 2 个设备登录
问题描述
我正在一个 lms 网站上工作,用户可以在 2 台设备上最多登录。到目前为止,我尝试了下面的代码,我正在修改我的登录控制器的登录方法。
if ($this->attemptLogin($request)) {
if (Auth::user()->role_id == 3) {
$logout = 0;
$logins = UserLogin::where('status', 1)->where('user_id', Auth::id())->latest()->get();
if (count($logins) == 2) {
foreach ($logins as $login) {
if ($login->created_at->addHours(2) < Carbon::now(env('TIME_ZONE'))) {
$login->status = 0;
$login->save();
$logout = 1;
}
}
if ($logout == 0) {
Auth::logout();
Toastr::error('Your Account is already logged in, in 2 devices', 'Error!');
return redirect()->route('login');
}
}
//storing login info
UserLogin::create([
'user_id' => Auth::id(),
'ip' => $request->ip(),
'browser' => Browser::browserName(),
'os' => Browser::platformName(),
'access_value' => Str::random(12),
]);
}
return $this->sendLoginResponse($request);
}
在注销功能中我试试这个
if (Auth::user()->role_id == 3) {
$login = UserLogin::where('user_id', Auth::id())->where('ip', $request->ip())->where('browser', Browser::browserName())
->where('os', Browser::platformName())->where('status', 1)->latest()->first();
if ($login) {
$login->status = 0;
$login->access_value = null;
$login->save();
}
}
但是当用户关闭他们的标签时,这将变得不必要。因为那个时候我无法对数据库执行操作或无法检查状态。注意:我尝试使用 javascript onunload 和 onbeforeunload 但我无法做到。我想要什么...请帮助我..提前谢谢
解决方案
推荐阅读
- python-3.x - 神经网络 Python 梯度下降
- html - 在 img 上带有图标的角标签
- c# - 使用 C# 的 sql 服务器连接
- complexity-theory - 以下循环的复杂性分析
- regex - 如何使用正则表达式从 Wikipedia 中删除 [edit] 和类似标签?
- apache-spark - Apache Spark - 使用和不使用案例类的性能
- ruby-on-rails - 如何编辑 Heroku 应用程序的权限?
- flutter - 在 Flutter Web 中显示带有省略号的段落是否损坏?
- pyspark - 如何将 RDD.groupBy() 的结果从 (key, [values]) 展平为 (key, values)?
- javascript - Phaser 渲染黑屏取决于我如何实例化着色器