.net - Angular 8 和 .Net 核心 API 中的并发会话
问题描述
我需要在浏览器 A 上显示弹出窗口(您在浏览器 B 上登录并在 5 秒内在浏览器 A 中注销)当用户尝试在浏览器 B 上登录时,他应该得到弹出窗口(您在浏览器 A 上登录并在浏览器中登录B in 5 sec ) 包含所有详细信息,例如 IP 地址
解决方案
您不能为此使用会话存储,因为两个浏览器将具有不同的会话。
但是,您可以将详细信息存储在数据库中。
登录时,存储此身份的有关 IP 地址、浏览器字符串等的详细信息。再加上“登录”日期和您保持更新的“最后一次看到”日期。还有一个(最初为空的)“注销”日期。
登录后,还可以通过检查任何以前存储的详细信息来检查该身份是否已被标记为“已登录”。您需要决定何时将某人“注销” - 例如,当该用户在过去 20 分钟内未出现时。请记住,并非每个人都明确退出。现在您可以显示该用户已在其他地方登录的消息。
对于每个请求,您都必须更新“最后一次看到”日期。您还需要检查“注销”日期。如果它有值,您可以显示消息,说明当前会话已被其他浏览器接管(当然,在此处注销)。
推荐阅读
- python - 如何在mongodb的一个查询中获取多个用户的数据?
- node.js - 使用 Azure 的 Terraform - 函数应用在 Azure 门户中工作,但不适用于 Terraform 代码
- ios - 如何在关闭任务完成后删除监听器?
- mongodb - Meteor MongoDB:特定月份和日期的聚合查询日期
- sql - 在雪花中使用间隔文字处理别名
- spring - 如何在 Spring Proxy 中的 Private 方法上创建 @Trasactional
- arrays - 根据javascript中的一些预定义对象用值替换键
- javascript - PlotlyJS,将辅助 x 轴定位在另一个 x 轴下方
- django - 我无法在 django 2.2.5 中运行导入导出功能
- c - 您如何获得有关 TCP Keepalive 上次探测的通知?