如何防止使用Angular + Dotnet核心应用程序并发用户登录?

问题描述

我们正在开发具有前端角度和后端dotnet核心的应用程序。我们必须在登录过程中检查是否已登录同一用户。如果是,那么它将像已登录同一用户的亲密用户。每当我开始通过Internet寻找此解决方案时,像我们可以在用户以1登录时在db中存储一些标志的选项,如果同一用户再次尝试登录意味着它应该与第二个登录用户保持亲密关系。但我的疑问是在系统故障期间,如suddon powershutdown / session timeout如何我们将登录标志更新为0(即,我们在这段时间内无法正确注销,对吗?)

任何帮助将不胜感激... 在此先感谢!

解决方法

实现会有些棘手

  1. 在登录数据库中创建一个存储唯一ID的字段
  2. 在登录时从角度创建唯一ID,如果用户有效,则将该唯一ID存储在登录数据库中。
  3. 仅当数据库中的uniqueID为null时,用户才能成功登录。如果它有价值,请显示一条消息,表明您已经登录。
  4. 将此唯一ID存储在Angular中,以便可以访问并随每个api调用发送该ID。应该在sql server中使用登录数据库检查uniqueID,如果唯一匹配,则应提供数据,否则将重定向到angular中的登录页面
  5. 如果用户未正确注销,请提供指向已注册用户电子邮件的链接或将OTP发送至已注册手机号码或提供安全性问题(如果可能),以便有效用户(如果未正确注销)可以重置uniqueID字段。

注意:如果第二个用户尝试登录,则使用此实现,他将无法登录。如果他是有效用户,则可以始终使用步骤5进行重置。如果用户重置,则先前的用户将不会收到任何新数据,并将重定向到登录页面