Skip to content

权限与菜单管理

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

配置建议

  1. 层级清晰:建议按照“模块 -> 功能 -> 操作”的层级结构组织权限标识(如 system -> user -> add)。
  2. 标识唯一:确保每个菜单和按钮的权限标识在系统中是唯一的。
  3. 同步维护:新增后端接口时,应同步在菜单管理中添加对应的按钮/资源权限,并分配给相应角色。

Released under the MIT License.