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();
});

这样就可以了,欢迎大佬们有更好的办法可以分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于人工蚁群、蚁群、遗传算法的多目标任务分配

matlab2020a可运行 基于人工蚁群、蚁群、遗传算法的多目标任务分配资源-CSDN文库

MAC磁盘空间不足怎么清理?MAC清理磁盘空间的五种方法

MAC磁盘空间不足怎么清理?当我们使用苹果MAC一段时间后,就会有大量的垃圾文件占用磁盘空间,例如系统缓存文件、应用程序缓存文件、备份和重复文件、旧版的应用程序及其部件等,为了不影响电脑的后续使用,我们需要经常清…

对java的interface的理解

一个例子来让我们理解更加深刻 这是我们的整体文件布局 ①A是接口 ②B和C是用来实现接口的类 ③show是我们的运行函数,用来展示 A接口 接口中定义的方法可以不用去实现,用其他类去实现(必须实现) 关键字:interface public interface A { // public static …

恭喜所有纺织人,你最想要的小程序来了

随着互联网的普及和电子商务的快速发展,越来越多的商家开始涉足线上销售。而小程序商城作为一种轻量级的应用程序,正逐渐成为商家们热衷选择的销售平台。本文将通过实用指南的形式,为商家们详细介绍如何通过乔拓云网后台,自助搭建…

华为OD机试真题-文件缓存系统-2023年OD统一考试(C卷)

题目描述: 请设计一个文件缓存系统,该文件缓存系统可以指定缓存的最大值(单位为字节)。 文件缓存系统有两种操作:存储文件(put)和读取文件(get) 操作命令为put fileName fileSize或者get fileName 存储文件是把文件放入文件缓存系统中;读取文件是从文件缓存系统中访问已存…

C语言:预处理详解

创作不易,来个三连呗! 一、预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编…

【前后端的那些事】评论功能实现

文章目录 聊天模块1. 数据库表2. 后端初始化2.1 controller2.2 service2.3 dao2.4 mapper 3. 前端初始化3.1 路由创建3.2 目录创建3.3 tailwindCSS安装 4. tailwindUI5. 前端代码编写 前言:最近写项目,发现了一些很有意思的功能,想写文章&…

最新 生成pdf文字和表格

生成pdf文字和表格 先看效果 介绍 java项目&#xff0c;使用apache的pdfbox工具&#xff0c;可分页&#xff0c;自定义列 依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.22<…

css 前端实现通过css动画实现进度条动态加载效果

效果图 代码 CommonProcess.vue 进度条动态加载组件代码 <!-- 进度条组件 --> <template><div class"common_process"><div v-for"(item, index) in dataList" :key"processType index" class"common_process_item…

Python实现如何在抛出异常时,页面截图保存在本地

方法一&#xff1a;使用 Selenium 操作网页 在使用 Selenium 操作网页时&#xff0c;可以通过捕获异常的方式来处理错误&#xff0c;并通过截图来记录错误现场。下面是使用 Python 和 Selenium 的示例代码&#xff1a; from selenium import webdriver import traceback# 创建…

SPI传感器接口设计与优化:基于STM32的实践

SPI&#xff08;串行外设接口&#xff09;是一种常用的串行通信协议&#xff0c;用于在微控制器和外部设备之间进行全双工的高速数据传输。在本文中&#xff0c;我们将探讨如何基于STM32微控制器设计和优化SPI传感器接口&#xff0c;并提供相应的代码示例。 1. SPI传感器接口设…

首届PolarDB开发者大会在京举办,阿里云李飞飞:云数据库加速迈向智能化

1月17日&#xff0c;阿里云PolarDB开发者大会在京举办&#xff0c;中国首款自研云原生数据库PolarDB发布“三层分离”新版本&#xff0c;基于智能决策实现查询性能10倍提升、节省50%成本。此外&#xff0c;阿里云全新推出数据库场景体验馆、训练营等系列新举措&#xff0c;广大…

【openwrt】【overlayfs】Openwrt系统overlayfs挂载流程

overlayfs是一种叠加文件系统&#xff0c;在openwrt和安卓系统中都有很广泛的应用&#xff0c;overlayfs通常用于将只读根文件系统(rootfs)和可写文件系统(jffs2)进行叠加后形成一个新的文件系统&#xff0c;这个新的文件系统“看起来”是可读写的&#xff0c;这种做法的好处是…

汽车美容行业研究:预计2029年将达到127亿美元

车体保养又习惯称汽车美容。主要目的是清除车体外和车体内的各种氧化和腐蚀&#xff0c;污染物等。然后加以保护&#xff0c;尽量突出车的“美”。它主要包括&#xff1a;车漆保养&#xff0c;内饰保养&#xff0c;电镀加工保养&#xff0c;皮革塑料保养&#xff0c;轮胎、轮毂…

UE C++打印文本的两种方式

UE C打印文本的两种方式 第一种方式UE_LOG打印打印出的内容在**输出日志**中显示 第二种方式GEngine->AddOnScreenDebugMessage打印&#xff08;常用&#xff09;打印出的内容在**控制台**中显示 第一种方式UE_LOG打印 官方文档&#xff1a; https://docs.unrealengine.com…

1、node.js安装

文章目录 node.js下载及安装node.js安装验证node执行js代码 node.js下载及安装 https://nodejs.org/en 访问官网&#xff0c;下载LTS版本 下载完成后&#xff0c;双击安装&#xff0c;安装过程基本不用动什么&#xff0c;包括盘符也尽量不要改。 node.js安装验证 cmd运行nod…

大师学SwiftUI第6章 - 声明式用户界面 Part 4

步进器视图 ​​Stepper​​视图创建一个带递增和递减按钮的控件。该结构体提供了多个初始化方法&#xff0c;包含不同的配置参数组合。以下是最常用的一部分。 Stepper(String, value: Binding, in: Range, step: Float, onEditingChanged: Closure)&#xff1a;此初始化方法…

2024年网安面试题大全

2024年网安面试题大全 秋招目录&#xff08;随时更新&#xff09; 有最新的公司校招信息可以随时issue&#xff0c;我会第一时间更新 以安全为主业的公司我就不放了&#xff08;360、深信服、奇安信等&#xff09;&#xff0c;主要放不以安全为主业但有安全业务的公司 公司…

Tuxera NTFS2024下载使用详细操作教程

你是否还在为Mac不能正常读写NTFS格式分区而感到苦恼呢&#xff1f;想要适合Mac系统使用来回转换磁盘格式又十分麻烦&#xff0c;这该怎么办呢&#xff0c;有了这款软件Tuxera ntfs就能马上帮你解决目前遇到的问题。 Tuxera NTFS2024最新免费版下载如下&#xff1a; https://…

如何给新华网投稿发稿?新华网的媒体发稿方法步骤

现如今&#xff0c;互联网已经成为了人们获取信息的主要途径&#xff0c;各大媒体网站也成为了发布自己作品的首选平台。其中&#xff0c;新华网作为中国最具影响力的新闻媒体之一&#xff0c;其内容覆盖面广、触及人群众多&#xff0c;因此&#xff0c;能够在新华网上发表文章…