同一浏览器和同一平台登录多个账号,提示账号切换为最新登录的用户\或退出


失败方案一:通过cookie存储两个token 在操作是进行对比,不同进行提示用户已切换


失败原因 : 同一用户多次登录token也是不相同的,不应该进行提示

失败方案二:存储两次登录获取到的账号名,在操作时进行对比,不同进行提示用户已切换


失败原因 : 当用户刷新浏览器时存储的cookie会进行覆盖,因此对比不出,无法提示用户


此时通过覆盖cookie来进行对比判断就行不通了,需要每个标签页都单独存储登陆的信息,cookie中存储最后登录者的信息,当旧的标签进行时,使用本标签的数据与cookie中存储的数据进行对比(单独存储,不进行覆盖);浏览器便签也单独存储数据使用到了sessionStorage;
sessionStorage 属性允许你访问一个 session Storage 对象。它与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除。页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来的页面会话。在新标签或窗口打开一个页面时会在顶级浏览上下文中初始化一个新的会话,这点和 session cookies 的运行方式不同。
那一个域名下的sessionStorage 的数据会在同一网站的多个标签页之间共享吗?要解决这个问题,使用chrome测试了一下场景。

当在一个a页面有sessionStorage时,这时新增一个标签并输入与a页面相同的url。新的标签里面打开的页面是没有另一个标签页面里面的sessionStorage时。也就是讲,新标签是新的会话。


这个样就实现多用户切换提示

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现多用户同时登录同一网站且同一账号不能同一时间重复登录的效果,你可以考虑以下步骤和策略: 1. 使用Session或Token机制:当用户成功登录后,为其生成一个唯一的Session ID或Token,并将其存储在服务器端的缓存中(如内存缓存或分布式缓存)。每次用户发送请求时,将该Session ID或Token作为标识传递给服务器进行验证。 2. 登录时验证唯一性:在用户登录时,先检查该账号是否已经有其他用户登录。如果有其他用户已经登录,则拒绝当前用户登录请求。 3. 登录冲突处理:如果有其他用户已经登录,你可以选择直接拒绝后续登录请求,或者将之前登录用户强制下线。如果选择后者,你需要在用户登录时更新Session ID或Token,并通知之前登录用户进行重新登录。 4. 定时过期机制:为每个Session ID或Token设置过期时间,在一定时间内没有活动的情况下自动过期并清除缓存。这样可以保证即使用户没有主动退出,也能够在一段时间后自动释放账号。 5. 合理设置并发限制:为了防止恶意攻击或滥用,你可以设置并发限制,限制同一账号同时登录的数量。根据需求和系统负载,可以设定一个合理的并发登录数,并在达到限制时拒绝后续登录请求。 需要注意的是,以上策略只是一种常见的实现方式,具体实现还需根据你的项目需求和技术栈进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值