在网络/系统崩溃的情况下,单用户登录

本文关键字:单用户 用户 登录 情况下 网络 系统 崩溃 | 更新日期: 2023-09-27 18:11:42

我想在我的网站上有一个单一的用户登录,即用户不能在同一时间从不同的地方登录一个用户名和密码。

这可以简单地通过在数据库中维护一个标志并在用户注销和登录时更改它来完成,但是如果用户没有按下注销按钮并且:

  1. 关闭浏览器(这里我可以通过window.unload事件改变数据库标志)
  2. 网络崩溃(真正的问题在这里)。

谁能建议如何处理系统/网络相关问题?我不想使用session.end(),因为有时它会在默认超时(~20分钟)后触发。

我可以使用signalR创建一个服务器定时器来监视用户是否活着?

在网络/系统崩溃的情况下,单用户登录

SignalR将遭受服务器崩溃。SignalR尽其所能确保在关闭之前触发事件,但在某些情况下,当服务器死亡时,将导致您的db中有无效条目。

https://jabbr.net/使用的一种方法是在服务器启动时记录每个用户的下线。因此,当您的SignalR服务器启动时:在数据库上运行清理。在所有其他情况下,你可以依靠SignalR来适当地跟踪你的用户。

为了解决你的#1:SignalR实际上会在卸载时向服务器发送一个abort命令,但是如果该命令由于任何原因没有被发送,服务器仍然会超时连接并最终触发OnDisconnected在hub上