【问题标题】:Prevent concurrent user sessions ASP.NET Core防止并发用户会话 ASP.NET Core
【发布时间】:2016-09-22 06:34:00
【问题描述】:

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

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

理想情况下,一旦用户登录,该应用就会使为该用户发布的所有其他现有 Cookie 失效并有效地“退出”。然后,旧会话将在下一次与服务器交互时重定向到登录页面。到目前为止,我还没有找到这样做的方法。

我一直在尝试找出一种方法来使用 documentation 中描述的自定义验证器。

谢谢!

【问题讨论】:

    标签: c# asp.net cookies asp.net-core


    【解决方案1】:

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

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

    【讨论】:

    • 这是有道理的。我希望有更多的“内置”方式来使用 cookie 身份验证,但使用中间件就可以了。
    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 2012-08-29
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多