4

我有一个 Web 应用程序,我希望用户只能从一个位置使用它(这意味着用户不能在两个位置主动使用该应用程序)。目前,我以一种非常常见的方式进行这项工作,只允许 1 个 cookie 会话有效并在用户登录时删除任何现有的会话。不幸的是,我被告知我只允许 1 个 cookie 的方法是不可接受的,因为我的用户移动到不同的站点有很多,并且厌倦了每次都必须登录。一个简单的解决方案就是允许超过 1 个 cookie,但我不能这样做,因为我需要确保一个用户帐户不会同时在两个位置使用。

我想知道实现这样一个系统的最佳方法是什么,用户不能在超过 1 个位置处于活动状态,但不一定必须在他们访问的每个位置登录。

我的一个可能的想法是允许记录多个 cookie,但是一旦 cookie 变为活动状态(这意味着我注意到会话导航应用程序),所有其他 cookie 都会被锁定一段时间,例如 15 分钟。如果 15 分钟内没有任何 cookie 会话处于活动状态,则允许任何 cookie 登录并获得对其他 cookie 的支配,直到超过时间限制。

编辑:他们离开一个位置后保持登录状态是可以的

4

3 回答 3

1

浏览器允许用户存储他们的凭据。让他们使用此功能轻松重新登录。

于 2013-02-25T22:48:57.480 回答
1

一种方法是记录他们的最后一个 IP 地址以及访问时间。在每次访问时,您都可以检查他们的最后一次访问。

如果最后一次访问来自同一个 ip,让他们通过。

如果最后一次访问来自不同的 ip,请检查那是多久以前的。然后,您可以定义他们需要空闲多长时间才能从其他位置访问它的截止点。15分钟似乎是合理的。

所有这些都可以在后端完成,这可能会提供更高级别的安全性。

于 2013-02-24T19:04:37.883 回答
0

无需超时。允许多个 cookie,但只有一个活动的。

指示您的用户在离开工作站时关闭应用程序。让这件事变得容易做到。在每个页面上放置一个关闭按钮,或者可能捕获onBeforeUnload并通知服务器该页面不再显示。当用户关闭应用程序时保持会话,但将其标记为当前不活动。

当您收到带有属于非活动会话的 cookie 的请求时,如果用户没有其他活动会话,请激活该会话而不会抱怨。

如果用户仍然有另一个会话处于活动状态,则说明问题正在发生。所以删除所有会话并将用户发送到登录屏幕。(那会教他们:))

于 2013-02-25T22:44:26.360 回答