路由菜单

在本框架中,路由配置是核心功能之一,它决定了应用的菜单结构和页面访问权限。本文档将详细介绍如何在前端模式(accessMode='frontend')下配置路由。

权限模式概述

框架支持三种权限模式:

  1. 前端权限模式 (frontend):权限控制完全由前端处理,适用于演示和简单项目
  2. 后端权限模式 (backend):权限控制由后端返回的菜单数据决定,适用于生产环境
  3. 混合权限模式 (mixed):结合前端和后端权限控制

本文档主要介绍前端权限模式的配置方式。

路由配置结构

路由配置文件位于 src/router/routes/modules/ 目录下,每个业务模块对应一个路由配置文件。

基本路由配置示例

import type { RouteRecordRaw } from 'vue-router';

import { BasicLayout } from '#/layouts';

const routes: RouteRecordRaw[] = [
  {
    component: BasicLayout,
    meta: {
      icon: 'ant-design:setting-outlined',
      keepAlive: true,
      order: 1000,
      title: '系统设置',
      perms: ['admin', 'sys:manager'],
      component: 'BasicLayout',
    },
    name: 'sys:manager',
    path: '/sys/manager',
    children: [
      {
        meta: {
          icon: 'ant-design:user-outlined',
          title: '用户管理',
          order: 10,
          perms: ['admin', 'sys:user'],
          component: '/sys/user/index',
          btns: {
            'sys:user:page': '分页查询用户',
            'sys:user:detail': '查看用户详情',
            'sys:user:save': '添加用户',
            'sys:user:update': '修改用户',
            'sys:user:remove': '删除用户',
          },
        },
        name: 'sys:user',
        path: '/sys/user/index',
        component: () => import('#/views/sys/user/index.vue'),
      },
    ],
  },
];

export default routes;

路由配置字段说明

顶层路由配置(Layout)

字段类型必填说明
componentComponent布局组件,通常为 BasicLayout
metaObject路由元信息
namestring路由名称,需全局唯一
pathstring路由路径
childrenRouteRecordRaw[]子路由列表

meta 配置项

字段类型必填说明
iconstring菜单图标,使用ant-design图标名称
keepAliveboolean是否缓存页面
ordernumber菜单排序,数值越小越靠前
titlestring菜单标题
permsstring[]权限标识,用于控制菜单访问权限
componentstring组件路径,用于菜单同步
btnsObject按钮权限列表,key为权限标识,value为按钮描述

子路由配置(页面)

字段类型必填说明
metaObject路由元信息
namestring路由名称,需全局唯一
pathstring路由路径
componentComponent页面组件,使用动态导入

权限控制

菜单权限控制

在前端权限模式下,通过 meta.perms 字段控制菜单的访问权限。例如:

meta: {
  perms: ['admin', 'sys:user'], // 拥有任一权限码即可访问
}

默认情况下,超级管理员(superAdmin)拥有所有权限。

按钮权限控制

按钮权限通过 meta.btns 字段定义,格式为:

btns: {
  'sys:user:page': '分页查询用户',
  'sys:user:detail': '查看用户详情',
  'sys:user:save': '添加用户',
}

按钮权限码通常以 btn:sys: 等前缀开头,用于区分菜单权限和按钮权限。

生产环境部署流程

在前端权限模式下,当部署到生产环境并需要进行权限分配时,需要执行以下步骤:

  1. 使用超级管理员账号登录系统
  2. 进入【系统设置】->【前端路由】模块
  3. 执行菜单同步操作
  4. 进入【系统设置】->【角色管理】->【授权菜单】给角色分配权限

同步后的菜单数据将存储到后端数据库中,以便在切换到后端权限模式时使用。

最佳实践

  1. 命名规范

    • 路由名称使用冒号分隔的命名方式,如 sys:user
    • 权限标识保持一致的命名规范,如模块:功能:操作
  2. 权限设计

    • 合理划分权限粒度,避免权限过多或过少
    • 页面权限和按钮权限分离管理
  3. 图标使用

    • 使用统一的图标库(ant-design图标)
    • 图标应与菜单功能相关
  4. 排序设置

    • 使用 order 字段控制菜单显示顺序
    • 数值越小越靠前,建议以10为间隔设置

通过以上配置,您可以快速构建和管理前端路由系统,实现灵活的权限控制。

其他更多配置详见请参考:路由和菜单open in new window