0

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

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

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

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

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

4

1 回答 1

1

SignalR 将遭受服务器崩溃的影响。SignalR 尽最大努力确保在关闭之前触发事件,但在某些情况下,服务器死机会导致您的数据库中有无效条目。

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

为了解决您的问题 #1:SignalR 实际上会在卸载时向服务器发送一个中止命令,但是如果由于某种原因没有发送该命令,则服务器仍将超时连接并最终在集线器上触发 OnDisconnected。

于 2013-05-01T01:26:34.203 回答