0

我了解当用户登录到 MVC webapp 时(运行时执行时FormsAuthentication.SignIn(..)),该用户会收到一个 cookie 并继续使用该 cookie 使用该站点。

但是,用户可以从隐身窗口或另一台 PC 再次登录,并同时从两个地方访问该站点。我想阻止他这样做。

我相信这个问题的解决方案就在附近,但是更深入的谷歌搜索或深入研究 MVC Forms Authentication 类并没有给我提供任何我可以使用的东西。

那么,当该用户成功尝试在新地方登录时,我如何强制注销最后一个用户登录信息(我相信它是存储在 Web 服务器中的 cookie,我可能是错的) ?

4

2 回答 2

1

你需要实施

Application_AuthenticateRequest

在您的 global.asax 文件中验证用户身份是否仍然正确。例如,您需要跟踪与用户相关的所有会话以及他使用的客户端。然后,如果您想注销用户,则可以在上述方法中使用 cookie 重置进行响应。

于 2013-08-13T13:17:53.153 回答
0

您可以做到这一点的唯一方法是将用户登录信息存储在表中。因此,当用户尝试再次登录时,您可以通过查询表来验证他是否登录了其他地方。用户注销后,从表中删除行。

请记住,您将无法在 cookie 的帮助下做任何事情。Cookies 将只包含表单身份验证票,身份验证模块将使用该票证来验证即将到来的请求是否经过身份验证。而且由于调用是无状态的,你不能仅仅通过查看 cookie 来决定任何事情

于 2013-08-13T13:16:40.993 回答