保留身份验证Cookie,但不允许在不同站点进行并发访问

时间:2013-02-15 03:37:46

标签: authentication web-applications cookies

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

我想知道实现这样一个系统的最佳方法是什么,用户不能在多个位置活动,但不一定要在他们访问的每个位置登录。

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

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

3 个答案:

答案 0 :(得分:1)

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

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

如果最后一次访问来自不同的IP,请检查多长时间。然后,您可以定义一个截止点,以确定它们在从另一个位置访问它之前需要多长时间闲置。 15分钟似乎很合理。

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

答案 1 :(得分:1)

浏览器允许用户存储其凭据。让他们使用此功能无需麻烦地重新登录。

答案 2 :(得分:0)

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

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

当您收到包含属于非活动会话的Cookie的请求时,如果用户没有其他会话处于活动状态,请在没有投诉的情况下激活该会话。

如果用户仍然有另一个会话处于活动状态,则会发生一些可疑的事情。因此,删除所有会话并将用户发送到登录屏幕。 (那会教他们:))