美文网首页
vue项目localstorage监听登录用户信息变化不同tab

vue项目localstorage监听登录用户信息变化不同tab

作者: 9月的甜橙子 | 来源:发表于2020-03-25 09:41 被阅读0次

    如果本文对您有帮助,请给我点赞哦~ 谢谢~

    问题背景:

    vue做了一个会员服务系统,用户先后用两个账户user1,user2在chrome中两个tab页进行登录,系统的右上角会显示用户信息(比如用户名:user1),当user2登陆后,user1那个tab页的用户信息还是显示的user1但是在页面中进行操作后台session信息其实已经是user2了,为了不给用户造成误导,必须把信息实现更新

    预期效果:

    用户先后用两个账户user1,user2在chrome中两个tab页进行登录,系统的右上角会显示用户信息,当user2登陆后,user1那个tab页的用户信息自动跟新成user2

    解决方法:

    本来是一个很简单的问题,奈何基础功不扎实求助网络,茫茫知识海洋中各种千奇百怪的解决方案,比如重写prototype什么的,真是服了。最后发现其实解决方法很简单。就是在显示user1的那个vue页面mounted里加上下面的代码,并在用户名所在元素上绑定id="username"即可。

    
      window.addEventListener('storage', function(e){
    
            if (e.key === 'user'){
    
                const currentUser = e.newValue? JSON.parse(e.newValue).userName : JSON.parse(e.oldValue).userName;
    
                const output = document.getElementById('username');
    
                output.innerHTML = currentUser;
    
            }
    
        })
    
    

    适用范围:

    我只测了chrome浏览器,不过IE应该也行,自己试试呗

    另外不同host的由于localstorage不跨域所以当前方法不适用


    如果本文对您有帮助,请给我点赞哦~ 谢谢~

    相关文章

      网友评论

          本文标题:vue项目localstorage监听登录用户信息变化不同tab

          本文链接:https://www.haomeiwen.com/subject/njftuhtx.html