1

我想限制对 Internet 或 Intranet Web 应用程序的并发访问。

我希望能够允许一定数量的并发访问,假设我想使用相同的用户名允许最多 20 个并发访问。

我可以想象在登录时创建一个会话并将其保存到数据库中并增加一个计数器,但是如果用户注销,则无法从数据库中删除它并减少计数器,因为用户可能只是关闭浏览器。

伙计们,您认为最好的方法是什么?

谢谢,

4

2 回答 2

1

您是对的,您无法知道用户是否只是杀死了他的浏览器或拉了绳子。

创建一个每 30 秒执行一次 Ajax 调用的计时器并记录它。如果用户在 60 秒内没有出现在此日志中 - 将他们扔到服务器上。
这不会阻止某人在夜间打开浏览器并占用一个插槽。

还有另一个答案提到了“最后一个活动”字段。另一方面,当有人需要让他们的浏览器保持打开状态以查看超过几分钟超时限制的内容时,这会造成混乱。

如果有人由于用户/超时限制而被淘汰;我认为如果有一个插槽再次打开,让他们以完全透明的方式再次自动登录会很好。

不用想太多,我相信这个解决方案会产生其他问题。

编辑掉:
正如我评论的那样——20 个用户——你真的解决了正确的问题吗?

于 2012-05-10T09:12:22.873 回答
0

您可能希望在会话中有一个“lastactive”字段。当有人尝试登录或以其他方式创建会话时,您可以查询在一段时间内(例如 15 分钟)内活跃的所有会话,并使用结果计数来告诉您有多少并发会话处于活跃状态。

于 2012-05-10T09:16:28.020 回答