2016-09-21 77 views
0

我试图阻止使用ASP.NET Core和CookieAuthentication中间件的用户的多个并发会话。防止并发用户会话ASP.NET Core

有关如何做到这一点的任何提示?

理想情况下,一旦用户登录,该应用程序将无效并有效“注销”为该用户发布的所有其他现有Cookie。然后,旧的会话将在与服务器的下一次交互中重定向到登录页面。到目前为止,我还没有找到办法做到这一点。

我一直在想方设法使用documentation中描述的自定义验证器。

谢谢!

回答

0

这是我如何处理它(使用ASP.NET Core,但这是无关紧要的):要做到这一点,你需要维护状态的某个地方,可以访问您的服务器。您可以在用户登录时将会话ID存储在数据库中。每个Web应用程序客户端都应该输入心跳网址(例如,每隔几分钟)。心跳的后端检查数据库中的会话ID。如果它对用户来说是活跃的,那么一切都很好;否则它清除cookie。如果您使用持久连接到客户端(websocket),则可以将消息推送到客户端以指示会话不再有效。

如果您需要确保在新会话开始后用户的其他会话不会发生其他操作,那么您需要在每次呼叫时检查会话(如上所述)。 ASP.NET Core的中间件功能非常适合这一点。

+0

这很有道理。我希望有更多的“内置”方式来做到这一点与cookie身份验证,但使用中间件将工作得很好。 –