如何在 mvc 4.0 中将同一用户名和密码的用户限制为来自两个系统/浏览器 asp.net 逻辑



我创建了一个 asp.net 的mvc4网站。我也实现了表单身份验证。在这个网站中,我想同时阻止对我的网站客户端的访问(如果我网站的客户端已经在计算机中打开他或她的帐户,那么该客户端无法获得在其他计算机或同一系统的任何其他浏览器中同时打开同一网站的任何权限)。

我想为用户提供一项付费服务,我不希望他只是与许多人共享他的用户名和密码,以便同时使用我的服务而无需付费。 请尽快帮助我

我该如何实现这一点。 我是否需要在数据库中维护一些登录信息,或者是否有任何内置工具可用于此。

据我所知,没有任何内置内容,但您可以实现自己的 ASP.NET 授权提供程序版本。

成功登录后,您需要将 FormsAuthenticationTicket 的值存储在数据库中,并将其关联到您的用户记录中。

在每次页面加载时,您需要根据该用户的数据库记录检查票证的值。如果不匹配,用户将被注销。

如果用户 A 和用户 B 使用相同的凭据,则使用此方法,用户 A

已登录,如果用户 B 随后登录,则用户 A 的会话将使用户 A 的会话无效,并且他们将无法同时查看内容。您还可以在会话被覆盖时记录活动,以及 IP 地址和用户代理,以帮助您识别共享帐户详细信息的用户。

此功能不是内置的。

我会在我的"用户"表中添加一个"IsLoggedIn"位列。 然后,您可以检查此列以查看是否应允许用户进入。

问题是知道何时应该将该标志设置为 false。 如果用户单击"注销"或在"会话结束"事件中,将标志设置为 false 很容易,但我认为您会遇到这不够好的情况。 例如,如果用户从笔记本电脑登录并且笔记本电脑的电池出现故障,您将不会从客户端收到用户已离开的任何通知......

我认为大卫已经给出了大部分想法(+1),但是对于关闭浏览器而不注销等问题,您可以在window.unload()事件中处理它以在表中设置标志。

相关内容

最新更新