vue同一个浏览器登录不同账号数据覆盖问题解决方案

 更新时间:2024年01月19日 11:45:03   作者:前端搬砖达人  
同一个浏览器登录不同账号session一致,这就导致后面登录的用户数据会把前面登录的用户数据覆盖掉,这个问题很常见,当前我这边解决的就是同一个浏览器不同窗口只能登录一个用户,对vue同一个浏览器登录不同账号数据覆盖问题解决方法感兴趣的朋友一起看看吧

同一个浏览器登录不同账号session一致,这就导致后面登录的用户数据会把前面登录的用户数据覆盖掉,这个问题很常见,当前我这边解决的就是同一个浏览器不同窗口只能登录一个用户,解决方案如下:

1、在App.vue中监听本地数据,并监听,如果账号不一致则刷新

这里使用storage监听本地数据 ,首先在登录后把数据存入本地,这里我用的是sessionStorage和localStorage中的数据做对比,因为localStorage数据是可共享的,如果不一致则刷新

 mounted() {
    window.addEventListener('storage', () => this.checkNameExpired());
  },
  destroyed() {
    window.removeEventListener("storage", () => this.checkNameExpired());
  },
  methods: {
    checkNameExpired() {
      let newUser = localStorage.getItem('newUserName')
      let user = sessionStorage.getItem('userName')
      //旧和新用户账号都存在时才需要刷新,防止管理端页面也会刷新
      if (newUser && user && newUser != user) {
        console.log('页面刷新');  
        //页面刷新
        this.$router.go(0);
      }
    },

2、对详情页面做页面访问失效处理

有些时候用户点进详情页,刷新时出现弹窗提示用户当前页面已丢失,点击跳回首页即可
1、首先定义一个弹窗组件,这里我就不写了
2、在home.vue组件中引入
3、vuex中定义一个属性控制TrialDialog.vue弹窗组件的显示和隐藏
4、在监听数据不一致时更新vuex中的数据即可
App.vue

 checkNameExpired() {
      let newUser = localStorage.getItem('newUserName')
      let user = sessionStorage.getItem('userName')
      // 登录不同账号刷新后失效页面路由名称
      let routeName = [需要显示弹窗的路由名字数组]
      if (newUser && user && newUser != user) {
        console.log('页面刷新');  
        //如果是类似运单详情等页面,则弹窗提示跳转到首页
        if (routeName.includes(this.$route.name)) {
          this.$store.dispatch("updateIsChangeRouter", true);   
        }
        //页面刷新
        this.$router.go(0);
      }
    },

2.1这里还有一个问题,就是弹窗只在内容区块,如果点击左边菜单路由,弹窗不应该在,目前是还在,所以我在路由前置中判断,如果切换的路由不在弹窗里边的页面,则更新属性

router.beforeEach((to, from, next) => {
  let routeName = [需要显示弹窗的路由名字数组]
  if (!routeName.includes(to.name)) {
    // 在路由切换时隐藏弹窗
    if (JSON.parse(sessionStorage.getItem('isShowChangeRouter')) == true) {
      store.dispatch("clearChangeRouter", false);
    }
  }
  next();
});

到此这篇关于vue同一个浏览器登录不同账号数据覆盖问题解决的文章就介绍到这了,更多相关vue数据覆盖内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中watch监听不到变化的解决

    vue中watch监听不到变化的解决

    本文主要介绍了vue中watch监听不到变化的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 计算属性和侦听器详情

    计算属性和侦听器详情

    这篇文章主要介绍了计算属性和侦听器,文章以介绍计算属性、侦听器的相关资料展开详细内容,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • 图文详解keep-alive如何清除缓存

    图文详解keep-alive如何清除缓存

    vue项目中常常会用到keepalive来作缓存,在应付基本要求上能够说很是方便,可是遇到同一个页面,根据条件不一样,分别缓存或者不缓存,就有些麻烦了,这篇文章主要给大家介绍了关于keep-alive如何清除缓存的相关资料,需要的朋友可以参考下
    2021-08-08
  • 详解auto-vue-file:一个自动创建vue组件的包

    详解auto-vue-file:一个自动创建vue组件的包

    这篇文章主要介绍了auto-vue-file:一个自动创建vue组件的包,需要的朋友可以参考下
    2019-04-04
  • VueJS组件之间通过props交互及验证的方式

    VueJS组件之间通过props交互及验证的方式

    本篇文章主要介绍了VueJS组件之间通过props交互及验证的方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-09-09
  • Vue 实现接口进度条示例详解

    Vue 实现接口进度条示例详解

    这篇文章主要介绍了Vue实现接口进度条功能,在请求数据的过程中,需要添加监听函数来监测数据请求的过程变化,并更新组件相应的属性和界面元素,本文结合实例代码详细讲解,需要的朋友可以参考下
    2023-04-04
  • 使用命令行工具npm新创建一个vue项目的方法

    使用命令行工具npm新创建一个vue项目的方法

    Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。下面小编给大家分享使用命令行工具npm新创建一个vue项目的方法,需要的朋友参考下吧
    2017-12-12
  • vue 中 element-ui table合并上下两行相同数据单元格

    vue 中 element-ui table合并上下两行相同数据单元格

    这篇文章主要介绍了vue 中 element-ui table合并上下两行相同数据单元格,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 使用vue2实现购物车和地址选配功能

    使用vue2实现购物车和地址选配功能

    这篇文章主要介绍了使用vue2实现购物车和地址选配功能,本文通过实例代码相结合的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-03-03
  • 详解vuejs中执行npm run dev出现页面cannot GET/问题

    详解vuejs中执行npm run dev出现页面cannot GET/问题

    这篇文章主要介绍了详解vuejs中执行npm run dev出现页面cannot GET/问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论