一.路由
静态路由 不需要权限就可以访问的页面
动态路由 需要权限访问的页面
1.拆分静态路由和动态路由
图一
2.准备页面
批量创建 mkdir 文件名 文件名
3.模块化路由
批量创建js touch
4.配置路由
// 公共布局
import Layout from '@/layout'
export default {
path: '/employees',
component: Layout,
children: [
// 员工列表
{
path: '', // 空或和父路由路径一样会被默认加载
name: 'employees', // 权限的标识
component: () => import('@/views/employees/index'),
// 配置左侧菜单信息
meta: {
title: '员工管理', // 菜单名字
icon: 'people' // 菜单图标
}
},
// 某个员工详情
{
path: '/employees/detail/:id',
component: () => import('@/views/employees/detail'),
hidden: true, // 不在左侧菜单显示
meta: {
title: '员工详情'
}
}
]
}
5.引入合并所有动态路由
如图一
二.页面权限控制
RBAC(Role-Based Access control) ,也就是基于角色的权限分配解决方案,相对于传统方案,RBAC提供了中间层Role(角色),其权限模式如下
通过控制动态路由实现控制权限
1.获取用户权限菜单数据
通过vuex获取信息时return roles
2.和所有动态路由做过滤得到最终权限菜单
3.添加到路由的配置
在permission.js
4.通过vuex存储路由
由于菜单渲染是通过router.options.routes 通过动态添加的路由不会显示在options.routes中 所以通过vuex来存储路由
5.修改菜单渲染为vuex存储的路由
6.动态路由刷新问题修复
刷新404问题
将404路由添加到动态路由之后