gpt4 book ai didi

c# - 登录安全 : How to Disable Multiple login

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:59 25 4
gpt4 key购买 nike

我想在我的网站上禁用多重登录。例如,当用户已经登录系统时。系统应禁止用户在其他浏览器或计算机上再次登录。目前我尝试通过使用数据库来做到这一点。我有一个像 login_status 这样的列,一旦用户登录,它将更新为 1 和 0 以表示离线。如果您的用户没有注销就关闭了浏览器。它将保持登录状态,用户应该要求管理员注销。问题是我们想在最多 30 分钟的空闲时间自动注销用户。我很难做到这一点。

有没有办法禁止多次登录并确定用户是否空闲并自动注销?我在考虑 cookie 和 session 。

最佳答案

访问者可以同时从多个位置登录的原因是,每当他们登录时,ASP.net 都会为他们分配相同的身份验证 token 。因此,身份验证 token 本身不允许您区分用户登录的位置。

可能有很多方法可以解决这个问题,但原则上您需要做的就是在用户的 session 状态中存储一些识别信息,并在每次请求时检查这些信息。例如。当他们登录时,他们的 IP 地址可以存储为 session 数据。然后对于每个后续经过身份验证的请求,可以将请求来自的 IP 与当前请求的 IP 进行比较。如果两者不匹配,则将用户注销。

或者,如果 IP 不是一个足够好的标识符(例如,如果用户从路由器后面登录,多台 PC 将共享 IP),那么您可以在登录时向用户身份验证 token 添加一些识别信息。这是有关如何执行此操作的教程:

http://www.danharman.net/2011/07/07/storing-custom-data-in-forms-authentication-tickets/

每次他们登录时,都会生成一个唯一的 GUID,并将其存储为 session 数据和身份验证 token 的一部分。在每个请求中,您比较两者,失败时将用户注销。

这是两种可能性 - 我相信还有其他可能性。

更好的方法可能是在 asp.net 生成它时影响 asp.net 身份验证 token 本身以引入一些更改,但我不确定这是否可能。

Google 什么也没给我。

关于c# - 登录安全 : How to Disable Multiple login,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com