防止并发用户会话.净的核心

本文关键字:核心 会话 用户 并发 | 更新日期: 2023-09-27 18:08:15

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

关于如何做到这一点有什么建议吗?

理想情况下,一旦用户登录,应用程序将失效并有效地"注销"为该用户发布的所有其他现有cookie。然后,在下一次与服务器交互时,旧会话将被重定向到登录页面。到目前为止,我还没有找到一个方法来做这件事。

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

谢谢!

防止并发用户会话.净的核心

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

如果您需要确保一旦新会话开始,用户的其他会话不会发生其他操作,那么您需要在每次调用时检查会话(如上所述)。ASP。. NET Core的中间件功能是完美的。