【问题标题】:asp.net core identity tracking user open sessionsasp.net 核心身份跟踪用户打开会话
【发布时间】:2020-07-15 18:24:05
【问题描述】:

我们有一个使用 asp.net core、.net core 3.1、angular 构建的 web 应用程序,它使用 asp.net core 身份进行用户身份验证管理。 我们需要实现以下场景:

"如果用户 A 已登录(这是一个打开的会话)并且用户 B 使用相同的凭据登录(这是第二个并发会话),则用户 B 通过 MFA 后,我们将向该电子邮件地址发送一封电子邮件通知他们其他人刚刚登录。我们不会结束用户 A 的会话。”

我们当前的实现使用 ASP.Net 身份验证用户身份,身份验证票存储在 cookie 中。由于身份验证票证存储在 cookie 中,因此会话是基于浏览器的,因此无法通过此实现跟踪用户是否使用正在进行的打开会话登录。

我倾向于使用自定义存储通过数据库/redis 在服务器端存储身份验证票证,然后跟踪令牌过期,从而确定现有的正在进行的会话。我是在沿着正确的方向思考,还是有其他机制?我想要一些想法和建议。

【问题讨论】:

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


    【解决方案1】:

    ASP.NET Core Identity 使用 Cookie 身份验证。这意味着当用户 B 登录您的应用程序时,应用程序不知道用户 A 是否处于活动状态,只有下次用户 A 向应用程序发送带有 cookie 的请求时,应用程序才能检查用户 A 是否处于活动状态(身份验证票未过期)并创建电子邮件回复。如果用户 A 不向服务器发送请求,服务器将不知道用户 A 的状态,因为 cookie 仅随 HTTP 请求发送。

    您可以使用asp.net core signalr,它使服务器端代码能够立即将内容推送到客户端。

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 2019-03-11
      • 2021-05-28
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      相关资源
      最近更新 更多