vue + vuex + vue-router 配置动态路由

本文介绍了在Vue项目中,如何根据用户角色动态配置路由并实现权限管理。登录后,后端返回不同角色的菜单和权限信息。前端将这些信息用于动态生成路由和菜单,通过全局前置守卫校验页面权限,无权限则重定向至401页面。步骤包括静态和动态路由的划分、Vuex中的路由配置以及登录后获取并动态添加路由。
摘要由CSDN通过智能技术生成

vue + vuex + vue-router 配置动态路由

项目说明

系统有多个角色身份,对应不同的角色身份展示对应不同的角色功能,也就对应不同的功能页面。一般登录后,由后端根据不同的角色登录返回不同的菜单目录以及不同的权限页面。前端根据后端返回信息,动态的生成菜单目录以及注册前端页面。

解决思路

根据不同角色登录后台返回权限以及目录信息,动态的生成路由以及菜单目录。由于系统是按照不同的页面对应不同的功能权限,不同的页面配置对应不同的权限code。后端会在返回菜单的同时,把权限code列表一起返回。因此,设计思路如下

  1. 路由配置 ,将路由分为两个部分,不需要进行权限判断的静态路由和根据后端返回需要展示的动态路由;
  2. 全局前置守卫中动态添加路由,校验页面权限。将后端返回的路由列表动态添加到路由中,页面跳转之前,判断是否有权限进入页面。若无权限,跳转401页面

解决步骤

路由配置
该系统了路由分为两个部分,1.系统默认不需要权限配置的页面路由 2.需要由后端返回权限的页面路由。将本地默认不需要配置权限的页面路由先挂载注册。

import Vue from 'vue'
import Router from 'vue-router'
import { Layout } from "../layout"; // 页面整体布局

Vue.use(Router)

//动态引入页面
export const pageList = {
  information: () => import("@/page/authorityManagement/informationManagement"), //个人信息管理
  authorityRole: () =>
    import("@/page/authorityManagement/rolePermission/index"), //角色权限管理
  "subscriberData/index": () =>
    import("@/page/authorityManagement/subscriberData/index"), //用户资料管理
  changePassword: () => import("@/page/authorityManagement/changePassword"), //修改密码
};
//手动跳转的页面白名单
const whiteList = [
  '/login'
];
//默认不需要权限的页面
export const constantRouterMap = [
  { path: '/login', name: 'login', component: () => import('@/page/login/index'), hidden: true },
  { path: '/404', component: () => import('@/page/errorPage/404'), hidden: true },
  { path: '/401', component: () => import('@/page/errorPage/401'), hidden: true },
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值