权限与菜单管理
PieMDM 的菜单系统与权限系统紧密集成,支持动态菜单渲染。这意味着用户登录系统后,只能看到其拥有权限的菜单项。
菜单管理
菜单管理功能允许管理员配置系统的导航结构。
1. 菜单列表
以树形结构展示系统的所有菜单和按钮。
- 目录:一级导航,通常不直接对应页面。
- 菜单:具体的页面入口。
- 按钮:页面内的操作及其对应的资源标识。
2. 新增/编辑菜单
在配置菜单时,主要包含以下字段:
- 上级菜单:选择父级节点。
- 菜单类型:目录 / 菜单 / 按钮。
- 菜单名称:显示在侧边栏的标题。
- 路由地址:前端路由路径(如
/system/user)。 - 组件路径:Vue 组件的文件路径(如
@/views/system/role/index.vue)。 - 权限标识:后端鉴权的关键标识(如
system:user:list)。 - 显示状态:控制菜单是否在侧边栏显示(部分功能页面可能需要隐藏)。
- 排序:控制菜单的显示顺序。
权限控制机制
菜单可见性
前端应用在初始化时,会调用 API 获取当前用户的权限列表。系统根据用户的权限标识,过滤出可访问的路由表并动态挂载。如果用户没有某个菜单的权限,该菜单将不会渲染在侧边栏中。
按钮级权限
在页面内部,通过指令或函数控制按钮的显示。 例如,只有拥有 system:user:add 权限的用户,才能看到“新建用户”按钮。
html
<!-- 示例:Vue 指令控制按钮权限 -->
<el-button v-hasPerm="['system:user:add']">新建用户</el-button>API 接口鉴权
前端的权限控制仅用于提升用户体验,核心的安全性依赖于后端的接口鉴权。 后端中间件会拦截请求,验证当前用户的角色是否包含请求所需的权限标识。如果权限不足,将返回 403 Forbidden。
配置建议
- 层级清晰:建议按照“模块 -> 功能 -> 操作”的层级结构组织权限标识(如
system->user->add)。 - 标识唯一:确保每个菜单和按钮的权限标识在系统中是唯一的。
- 同步维护:新增后端接口时,应同步在菜单管理中添加对应的按钮/资源权限,并分配给相应角色。