我创建了一个asp.net mvc4网站。我还实现了表单身份验证。在此网站中,我希望在同一时间阻止对我的网站客户端的访问(如果我的网站的客户端已经在计算机中打开他或她的帐户,那么该客户端无法在同一台计算机或同一系统的任何其他浏览器中同时打开同一网站)。
我想提供一个付费服务给用户,我不希望他只是分享他的用户名和密码与许多人同时使用我的服务而不支付它。请尽快帮我
我怎样才能实现这一点。我是否需要在数据库中维护一些登录信息,或者是否有任何内置工具可用于此。
发布于 2013-11-14 06:17:31
此功能不是内置的。
我会向我的“用户”表中添加一个"IsLoggedIn“位列。然后,您可以检查这个列,看看是否应该允许用户进入。
问题在于知道什么时候应该将该标志设置为false。如果用户单击“注销”或“”事件,很容易将标志设置为false,但我认为您将运行到不够好的情况下。例如,如果用户从笔记本电脑登录,而笔记本电脑的电池出现故障,您将不会从客户端得到用户留下的任何通知。
发布于 2013-11-15 12:19:33
据我所知,没有任何内置的东西,但是您可能能够实现您自己版本的ASP.NET授权提供者。
成功登录后,您需要将FormsAuthenticationTicket的值存储在数据库中,并将其与用户记录相关联。
在每次页面加载时,您都需要根据该用户的数据库记录检查票证的值。在不匹配的情况下,用户将被注销。
使用这种方法,如果用户A和用户B使用相同的凭据,则用户A被登录,如果用户B随后登录,它将使用户A的会话无效,并且他们无法同时查看内容。还可以在会话被覆盖时记录活动,以及IP地址和用户代理,以帮助您识别共享帐户详细信息的用户。
发布于 2013-11-15 12:39:52
我认为David已经给出了大部分的想法(+1),但是对于关闭浏览器而不注销的问题,您可以在window.unload()事件中处理它,以便在表中设置标志。
https://stackoverflow.com/questions/19970785
复制相似问题