Vue中为动态角色设计动态菜单(并配置动态路由,递归菜单,处理重定向与死循环、push重定向异常捕获)

本文探讨了如何通过动态角色配置和动态菜单管理,实现前后端分离的权限控制。核心内容包括动态路由获取缓存菜单的方法,以及解决重定向导致的无限循环问题。涉及技术包括session、路由守卫和Vue.js中的路由操作。
摘要由CSDN通过智能技术生成

一、思路

动态角色、动态菜单基本都是后端的事情了(两个表的事情)

  • 设计方面:
  • 动态角色:是配置配置两个权限数组,一个放置当前用户的全部角色,一个放置当前用户的当前角色(即一个时候只能使用一个角色)
  • 动态菜单:在每次layout刷新时调当前角色对应的菜单(这个是配置在数据库中,一个角色会给他分配哪些菜单,菜单是由前端先写上全部,然后再自己根据需要来选择)。
  • 动态路由:每次获取到菜单时,存入session缓存中,在需要跳转页面时,通过路由守卫(前置)beforeEach,对缓存中的菜单进行递归获取,然后判断是否能够进入该页面,否则重定向403

二、动态路由获取缓存中的菜单

不多说,上代码!

这个前置路由守卫有一些需要注意的地方,主要是next(),当next('/403')这样内部有值的时候,他会进行重定向(即还要再次进入一次beforeEach这样尤其容易导致无限循环,所以,后面的else{next()}这样是必须的,不然条件一个不对就一直循环,十分之坑!!!

beforeEach: (to, from, next) => {
   
//获取session缓存
          const m = getStorage(MY_MENU_CACHE_KEY)
          //标记是否能够进入
          let bo = false
          //这是递归菜单的路径(因为是多重children的对象)
          const 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值