在 ASP.NET Web 应用程序中是否可以允许每个用户同时登录一次?
我正在开发一个 Web 应用程序,我想在其中确保该网站一次只允许每位用户登录一次。如何检查当前用户是否已经登录?
请建议我们可以处理此问题的正确登录方法。我认为我们应该使用 SQL Server session 状态来处理这个问题。你有什么建议?
我想到了一个解决方案。我们可以这样做:
当用户登录系统时,我们会在用户列中插入 session ID。 (我们将使用数据库 session ,以便我们可以轻松获取所有 session 相关数据,如 isexpired、expiredatetime 等)。
当同一个用户再次尝试登录时,我们将检查该 session ID 列并检查 session 是否已过期。如果 session 没有过期,那么我们将不允许用户登录。
每次用户注销时更新用户 session ID。
请建议这是否是正确的方法。
最佳答案
请引用:
开箱即用,.NET 不支持这一点。 .NET 允许并发登录,我相信您已经知道了。
我有同样的要求,并提出了一个非常巧妙的解决方案,在上面的链接中进行了演示。简而言之,我的要求是一次只能有一个用户登录。如果同一个用户 ID 试图在其他地方登录,那么它会通过检查不同 session ID 下的现有登录来终止第一次登录的 session (这使得用户 ID 可以从他们的多个实例登录)他们计算机上的 Web 浏览器 [相同的 session ID],这很常见,但不是来自不同的计算机 [不同的 session ID](例如,可能是由于有人窃取了他们的凭据)。通过修改代码,您可能会更改此行为 - 即阻止第二次登录尝试,而不是终止已经处于事件状态并正在使用的第一次登录。
当然,它可能无法 100% 满足您的需求,因此请随意修改它以满足您的需求。
关于c# - 在 ASP.NET 中每个用户只允许一个并发登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515716/