vue-router 根据权限跳转路由

首先将路由更改,由路由变成配置文件

                           原来结构                            更改后结构

 

 


import Router from 'vue-router'//引用路由
import routerConfig from './router'//引用配置路由地址
Vue.use(Router)//使用路由

let router = new Router(routerConfig)//新建路由

let routesPath = [];//储存路由地址数组
routerConfig.routes[1].children.forEach((val)=>{
  routesPath.push(val.path)//添加地址
})

router.beforeEach((to, from, next) => {
    let enterpriseCode=sessionStorage.getItem('enterpriseCode')||''
    if ( to.path !== '/'&&enterpriseCode=='') {//判断是否登陆后跳转
      next({
        path: '/'
      })
    }else {
      if (sessionStorage.getItem('usermenu')) {
        // 获取跳转路由对应路由配置中的索引值
        let index = routesPath.indexOf(to.path);
        // 获取登录后返回可跳转路由权限
        let menus = JSON.parse(sessionStorage.getItem('usermenu')).menus;
        let menuId = [];
        menus.forEach((val)=>{
          menuId.push(val.vMenuId);
        })
        if (index === -1) {//跳转404
          next();
          return;
        }
        // 匹配系统管理之前的路由
        if (index <= 4 && menuId.includes(index+1)) {
          next();
        }
        // 匹配系统管理之后的路由
        else if(index > 4 && menuId.includes(index+2)) {
          next();
        }
        // 匹配返回的路由权限之外的路由
        else {
          next(from.path);
        }
      }else {
        next();
      }
    }
  })
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值