角色与资源
角色是用户与资源之间的授权集合。资源既描述前端导航和操作,也描述后端接口访问。
角色管理
角色包含编码、名称、状态和备注。编码用于稳定识别,创建后不应随意修改。
角色状态为禁用时:
- 用户与角色关系可以保留。
- 当前鉴权查询会忽略该角色。
- 不需要强制清理所有关联用户 Token。
- 重新启用后,后续请求按最新权限恢复。
编辑角色可能影响当前用户权限时,前端应给出清晰的二次确认;最终保护仍由后端权限控制。
资源管理两个 Tab
视图资源
维护菜单、页面、按钮和分组。菜单与页面可以配置路径、组件、图标、外链、可见性和排序。按钮通常只需要名称、权限标识、状态与排序。
接口资源
维护后端接口权限。接口资源进入独立的接口分组树,便于按用户、角色、组织、文件等模块查找。
接口资源应填写:
- 名称:面向管理员的操作描述。
- 权限标识:与后端
@PreAuthorize完全一致。 - 分组:便于管理,不参与鉴权。
- 状态:禁用后不参与有效权限查询。
- 备注:建议写请求方法、路径和是否暂未被前端使用。
挂载接口
在视图资源节点上点击“挂载接口”,可以从接口分组树选择一个或多个接口。同一接口可挂载到多个节点。
典型设计:
| 视图节点 | 挂载接口 |
|---|---|
| 用户管理页面 | 用户列表 |
| 新增用户按钮 | 新增用户 |
| 编辑用户按钮 | 用户详情、编辑用户 |
| 重置密码按钮 | 重置用户密码 |
挂载只辅助授权管理,不代表角色自动获得接口权限。挂载发生变化时,后端需要清理已经失效的角色挂载记录;新增挂载也不能自动给现有角色授权。
分配权限
角色授权树同时展示视图节点和其挂载接口。接口节点直接显示“接口”类型,不额外显示“挂载”字样。
操作建议:
- 先勾选需要访问的菜单和页面。
- 再勾选需要展示的按钮。
- 检查按钮下挂载的接口是否符合授权范围。
- 对敏感接口逐项取消或勾选。
- 保存后重新打开授权树核对。
- 使用目标角色账号实际请求验证。
删除与变更
- 删除接口资源:应阻断或清理挂载关系和角色资源关系。
- 删除视图资源:应处理下级节点、挂载关系和角色关联。
- 删除分组:有子节点时必须二次确认或拒绝,避免误删整棵树。
- 变更父节点:不能选择自身或自己的后代作为新上级。
- 取消挂载:只影响该挂载位置;接口资源本身和其他挂载位置保留。
排查权限问题
遇到“按钮还在但接口 403”时依次检查:
- 角色是否拥有对应
view:按钮资源。 - 角色是否拥有对应
api:接口资源。 - 角色、视图资源和接口资源是否启用。
- 挂载关系是否仍有效。
- 普通角色是否重新加载了权限上下文。
- 后端注解字符串是否与资源表完全一致。
超级管理员或安全模式返回 *:*:* 时,会绕过普通权限限制,测试细粒度权限应使用普通账号。