角色管理
角色把一组菜单打包成一份岗位职责。一个用户可以拥有多个角色,最终权限取并集;一个角色可以分配给任意多用户。
配置项
| 字段 | 说明 |
|---|---|
| 编码 | 唯一标识,创建后不可修改,便于在代码中引用 |
| 名称 | 显示名称 |
| 状态 | 停用后该角色下的菜单权限对所有用户失效,不必逐个解绑 |
| 菜单权限 | 树形勾选。勾选表格类菜单的同时,可继续勾选其下的新增 / 修改 / 删除 / 导出等功能按钮,实现按钮级授权 |
| 包含用户 | 反向查看有哪些用户持有该角色 |
按钮级权限
菜单管理中,每个 Erupt 类菜单下都会自动生成功能按钮子菜单。角色只勾选「订单」而不勾选其下的「删除」,用户就看不到删除按钮,直接调接口也会被 403 拒绝。前后端共用同一套菜单值做判断,不存在「前端藏了、接口还能调」的缝隙。
严格角色菜单策略
默认开启 erupt.upms.strict-role-menu-legal:非超管用户在此分配菜单时,候选菜单树只包含自己已拥有的菜单(取其全部启用角色的并集),因此无法把自己没有的权限授予别人,杜绝了「建个角色给自己提权」的路径;超管不受限制。
WARNING
角色上原有的、超出操作人可见范围的菜单不会显示在树中,该用户保存后这些菜单会被移除。跨范围的角色请由超管维护,或关闭该策略。
实践建议
- 按职责而非按人建角色:「订单审核」「财务查看」,而不是「张三专用」。
- 只读角色只勾选表格菜单,不勾任何功能按钮。
- 角色管理菜单本身也是权限:不要把它分配给普通角色。
erupt-ai 的 Tool 授权也复用了这里的角色,见按角色授权 Tool。