pc端要做一个切换账号的功能?
背景:因为老板有两个手机号,这两个手机号在系统中的权限不一样,所以产品考虑给老板做一个切换账号的功能。说实话这个功能在pc端可是不常见啊。不过这个功能不怎么复杂。
我简单记录一下这个功能是怎么实现的。
我们系统的token是放在cookie中的,为什么放这儿,是因为cookie可以跨子域,靠这个功能我们实现了单点登录。
实现思路:
1.我需要往cookie
再存一个值accountTokenList
来存放多个账号的token。
2.每当登录账号是我往accountTokenList
的首位塞一个对象,该对象有phone、token等属性。
3.点击切换账号的列表时,把accountTokenList
中对应账号的token拿出来存到cookie的token中。
4.等账号退出时,再把accountTokenList
中对应的对象清除。
带来一个问题:
当同时打开多个页面或者多个系统时,我在页面A中切了账号,由账号1切换为账号2,然后又切换到B页面,这个时候B页面展示的数据还是之前账号1查出的数据(系统右上角展示的登录用户还是账号1),但是cookie里存的token已经修改为账号2的,再点击查询按钮查数据,新得到的数据已经是账号2的数据,但是页面之前查询的数据是账号1的数据,这样就会出现页面数据的错乱。
解决办法:
检测页面显示时判断token是否已经改变,如果改变,刷新页面。
1 | // 该逻辑是当浏览器页签切换时,判断cookie中存的token是否已经被别的系统修改,如果修改则刷新页面 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 liang yong gang!