当前位置: 首页 > article >正文

记录 vue-router 跳转到第一个有权限的菜单的实现方式

场景描述

需要实现一个动态路由,并且点击进来加载的页面是第一个有权限的页面。

实现思路

在路由守卫 router.beforeEach 钩子中加入跳转逻辑,从获取的动态路由中匹配第一个加上即可。

router.beforeEach((to, from, next) => {
	 if (getToken()) {
		// 略过请求动态路由的部分
		const accessRoutes = {};
		 router.addRoutes(accessRoutes);
		 next({ path: accessRoutes[0].path + '/' + accessRoutes[0].children[0].path })
	} else {
		window.location.href = "/";
	}
})

扩展

如果要跳转到其他项目的页面,可以通过window.location.href来实现。

也有同学会使用window.open,这里不太推建使用,原因如下:

由于现代浏览器的安全策略,特别是对于弹窗窗口的限制,直接使用 window.open 可能会被浏览器阻止或放入通知中心,尤其是当它是由非用户直接操作触发的时候(比如响应鼠标点击以外的事件)。

关于 window.location.href 和 window.open 的区别,也贴在下面:

window.location.href:

  • 它会改变当前窗口的URL和加载新页面,相当于在当前标签页/窗口中进行页面重定向。
  • 当你设置 window.location.href 的值时,浏览器会立即停止当前页面的所有活动并开始加载新地址指向的页面。

window.open:

  • 它会在一个新的浏览器窗口或标签页中打开指定的URL,不会影响当前窗口的内容。
  • 如果没有指定窗口参数或者目标名称(例如 _blank),则默认在新窗口中打开链接。

http://www.kler.cn/news/294561.html

相关文章:

  • 【大模型开发】传统向量模型 vs 重排序模型:原理、实现与应用
  • 欺诈文本分类检测(十二):模型导出与部署
  • 八大排序原来也不过如此
  • 【软件逆向】第27课,软件逆向安全工程师之(二)寄存器寻址,每天5分钟学习逆向吧!
  • 【MIT 6.5840/6.824】In Search of an Understandable Consensus Algorithm 学习笔记
  • 如何使用useMemo来优化React组件的性能?
  • 7、关于LoFTR
  • 三维布尔运算对不规范几何数据的兼容处理
  • Linux 中常用的 Vim 命令大全
  • [OpenCV] 数字图像处理 C++ 学习——13Canny边缘检测 附完整代码
  • 828华为云征文 | Flexus X 实例服务器网络性能深度评测
  • 使用PowerShell导出Exchange邮箱大小
  • docker-network
  • GatewayWorker框架的详解和应用
  • [建模已更新]2024数学建模国赛高教社杯A题:“板凳龙” 闹元宵 思路代码文章助攻手把手保姆级
  • Hive整合MySQL
  • tabBar设置底部菜单选项以及iconfont图标
  • Java学习第七天
  • 【功能实现】如何实现点击后跳转到顶部??
  • 57-java csrf防御方案
  • 【Redis】Redis 集群搭建与管理: 原理、实现与操作
  • vue项目打包后,生成的index.html直接本地打开后没内容
  • Web:攻防世界unseping
  • 11Python的Pandas:可视化
  • Element Plus(Vue 3 版本)来实现图片轮播
  • P01-Java何谓数组
  • sheng的学习笔记-AI-概率图,隐马尔可夫HMM,马尔可夫随机场MRF,条件随机场CRF
  • 尝试用java spring boot+VUE3实现前后端分离部署(8/31)
  • 时间段切块算法
  • Flask中 blinker 是什么