Vue3+TS实现后台管理系统权限控制(动态路由/菜单/按钮)
前言
权限管理是后台管理系统的核心功能之一。本文将基于Vue3全家桶+TypeScript+Element Plus,手把手实现包含路由权限、菜单权限、按钮权限的全套方案,并提供完整代码示例。
一、权限系统核心概念
1.1 权限模型
常见的RBAC(Role-Based Access Control)模型:
- 用户 -> 角色 -> 权限
- 权限包含:页面权限、操作权限、数据权限
1.2 前端权限控制点
- 路由权限:控制页面访问权限
- 菜单权限:动态生成可访问菜单
- 按钮权限:控制操作按钮显示/隐藏
- 接口权限:请求拦截与鉴权
二、项目准备
2.1 技术栈
- Vue3 + TypeScript
- Vue Router 4
- Element Plus
- Axios
2.2 初始化路由
// router/index.ts
const publicRoutes = [
{
path: '/login',
component: () => import('@/views/login/index.vue')
},
// 404页面需放在最后
{
path: '/:pathMatch(.*)*',
component: () => import('@/views/404.vue')
}
]
三、路由权限实现
3.1 动态路由原理
- 用户登录后获取权限数据
- 根据权限过滤路由配置
- 使用
router.addRoute
动态添加路由
3.2 路由配置示例
// 需要权限的路由
export const privateRoutes: RouteRecordRaw[] = [
{
path: '/user',
meta: {
title: '用户管理',
permissions: ['user:read']
},
children: [