Authentication 保留身份验证Cookie,但不允许在不同站点同时访问

Authentication 保留身份验证Cookie,但不允许在不同站点同时访问,authentication,web-applications,cookies,Authentication,Web Applications,Cookies,我有一个web应用程序,我希望用户只能从一个位置使用它(这意味着用户不能在两个位置积极使用该应用程序)。目前,我以一种非常常见的方式实现了这一点,只允许1个cookie会话有效,并在用户登录时删除任何现有的cookie会话。不幸的是,有人告诉我,我只允许1个cookie的方法是不可接受的,因为我的用户经常移动到不同的站点,并且厌倦了每次都要登录。一个简单的解决方案就是允许多个cookie,但我不能这样做,因为我需要确保一个用户帐户不会同时在两个位置使用 我想知道实现这样一个系统的最佳方式是什么,

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

我想知道实现这样一个系统的最佳方式是什么,用户不能在多个位置处于活动状态,但不必在访问的每个位置都登录

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


编辑:他们离开某个位置后可以保持登录状态。一种方法是记录他们的最后一个ip地址以及访问时间。在每次访问中,您都可以检查其上次访问

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

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


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

不需要超时。允许多个cookie,但仅允许一个活动cookie

指示用户在离开工作站时关闭应用程序。让这件事变得容易做。在每个页面上放置一个关闭按钮,或者在卸载之前捕获
on
,并通知服务器该页面不再显示。请在用户关闭应用程序时保留会话,但将其标记为当前未激活

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

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

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

希望这不是太具体的情况,但我认为这是一个普遍的问题,其他人也可以处理。我认为您的15分钟锁定解决方案听起来不错,但我建议添加一个按钮“离开当前位置”因此,用户可以在必要时快速移动位置,而无需等待15分钟。这是你不喜欢的地方吗?那么,问题是什么呢?用户一次只能在一个位置,那么为什么还要在代码中强制执行这一点呢?您是否担心您的用户将与其他人共享其凭据?您是否担心未经授权的用户会使用仍然有有效cookie的未防护工作站?你想阻止什么事情发生?软件不会教用户任何东西,而试图阻止的软件会被人憎恨。如果保持登录是一项业务需求,那么不要因为用户没有注销而惩罚用户,只需执行超时即可。@CodeCaster从事情的声音来看,业务有两个相互冲突的需求。他们想吃蛋糕,也想吃蛋糕。我很好奇为什么。当然,你可以用一种不那么严格的方式来处理这个问题。虽然你说得有道理,但我相信如果用户忘记注销一个会话,系统会注销他们所有的会话,尤其是在OP的评论下,用户不习惯再次登录,那么用户肯定不会喜欢这样。这是好是坏是另一回事。