angular - 如何使用 Angular + Dotnet 核心应用程序防止并发用户登录?
问题描述
我们正在开发具有前端 Angular 和后端 dotnet 核心的应用程序。我们必须在登录过程中检查同一个用户是否已经登录。如果是,那么它会像同一个用户已经登录一样亲密用户。每当我开始在互联网上寻找这个解决方案时,我看到像我们可以在用户以 1 身份登录期间将一些标志存储在数据库中的选项,如果同一用户再次尝试登录意味着它应该提示第二个登录用户。但我的疑问是在系统故障期间,如 suddon powershutdown / session timeout 如何能我们将登录标志更新为 0(即,我们无法在这段时间内正确注销,对吗?)
任何帮助将不胜感激......在此先感谢!
解决方案
实现会有点棘手
- 在登录数据库中创建一个存储唯一 ID 的字段
- 在登录时从 Angular 创建一个唯一 ID,如果用户是有效的,则将该唯一 ID 存储在登录数据库中。
- 只有当数据库中的 uniqueID 为空时,用户才会成功登录。如果它有值,则显示一条消息,表明您已经登录。
- 将此唯一 ID 存储在 Angular 中,以便可以访问它,并在每次 api 调用时发送该 ID。应该使用登录数据库在 sql server 中检查 uniqueID,如果它仅匹配,则应提供数据,否则以角度重定向到登录页面
- 如果用户未正确注销,请提供指向注册用户电子邮件的链接或向注册的手机号码发送 OTP 或提供安全问题,以使有效用户在未正确注销的情况下可以重置 uniqueID 字段。
注意:如果第二个用户尝试登录,则使用此实现将无法登录。如果他是有效用户,他始终可以使用步骤 5 进行重置。如果用户重置,则之前的用户将不会收到任何新数据,并将被重定向到登录页面
推荐阅读
- python - 您如何确保 while 循环不会循环到先前的输入?
- python - 我不知道为什么我的模拟这么慢。我需要优化我的模拟并改进我使用变量的方式
- java - Wildfly 替换部署时,Java Web 应用程序是否不可用?
- vue.js - NuxtJS 调度未加载数据
- android - 将 Flutter 应用上传到 Google Play - 请升级到账单库版本 3 或更高版本以发布此应用。详细了解计费库 3
- sql - 按汇总复制结果分组
- android - 如何在android(java,kotlin)中使用一个套接字发送多条消息
- c# - 为什么此示例中的每个列表都进行了修改?
- html - 图片卡悬停效果宽度问题
- windows-10-universal - 将 appx 从电子生成器上传到 Windows 应用商店,给出无效的包标识名称...(预期:XXXAppName)