登录后用第二个账户二次登录导致权限生效问题

问题描述:用户1在浏览器打开A标签页登录了a账号,然后又到B标签页登录了b账号,也就是同时登录了两个账号,然后到A下去操作数据(不刷新页面),结果造成了在A下修改到了B的数据,而且两个账号的权限还存在差异

造成原因: 由于是同源页面,新的标签页的用户信息和token覆盖掉前一个标签页的用户信息和token。

解决方法:

前端解决方法:在登陆的时候存储userId+token 作为键存储 token   ,但是需要考虑到这个时候用户名:userName也可能会被覆盖,所以在每次刷新页面之前,把用户名存储到sessionStorage中去,因为sessionStorage生命周期为当前窗口标签页,也就是每个标签页中的sessionStorage互不影响,即使是同源页面

同一浏览器打开两个同源页面引发的bug【@码云 提个小优化】浏览器打开`A`标签页登录了`a`账号,然后又到`B`标签页 - 掘金 (juejin.cn)
 

线上问题和上述还有一点区别:一个用户是用管理员账户登录的系统,然后未推出用第二个账户在其他系统单点登录了我们的系统,导致单点登录的那个账户权限等同了管理员,造成越权问题。

当时解决问题的方法:因为考虑是上线的项目,有些改动有限制。当时考虑的是在第二个账户登录的时候把第一个账户的登录存入redis的信息删除。通过查找redis的存储的键名规则查询到登录信息,根据请求的uri判断是单点登录的用户,增加一个过滤器在用户存储登录信息到redis前,把之前的redis上一个用户单点的信息去除。并在前端增加一个刷新操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值