3.0 KiB
3.0 KiB
| name | description |
|---|---|
| jjb-button-permission-boundary | 按钮权限控制边界。定义哪些按钮需要权限控制、哪些不需要。Use when 判断页面上的按钮是否需要接入 permission() 检查。 |
权限控制边界
判断原则
按需控制,不是所有按钮都要加权限。 只有会改变数据状态或涉及敏感操作的按钮才需要权限控制。
需要权限控制的按钮
| 类别 | 按钮示例 | 权限码示例 |
|---|---|---|
| 数据变更 | 新增、编辑、删除、批量删除、移动、复制 | xx-xx-add、xx-xx-edit、xx-xx-delete |
| 数据导入/导出 | 导出、导入 | xx-xx-export、xx-xx-import |
| 状态流转 | 审核、审批、发布、下架、启用、禁用 | xx-xx-approve、xx-xx-publish、xx-xx-enable |
| 权限/分配 | 分配权限、授权、指派 | xx-xx-assign、xx-xx-authorize |
| 只读查看 | 详情、查看 | xx-xx-detail、xx-xx-view |
| 其他敏感操作 | 撤回、作废、确认、提交 | xx-xx-withdraw、xx-xx-confirm、xx-xx-submit |
不需要权限控制的按钮
| 类别 | 示例按钮 | 原因 |
|---|---|---|
| 搜索/过滤 | 查询、搜索 | 属于页面内数据筛选,不改变数据 |
| 表单重置 | 重置、清空表单 | 仅清零搜索条件,不影响数据 |
| UI 交互 | 展开、收起、刷新 | 纯前端交互行为 |
| 选择/导航 | 取消选择、返回、关闭 | 不涉及数据变更 |
边界情况
- 详情/查看:需要权限控制,部分业务场景下查看敏感数据也需受控。
- 导出:一般需要权限控制,因为涉及数据批量导出,可能泄露数据。
- 批量操作:批量新增、批量删除、批量审批等均需权限控制,每条操作对应独立权限码。
实际页面示例
以资源管理页面为例:
PageLayout
├── [需要] 新增视频 / 新增试题 ← reslib-app-resource-add
├── 搜索栏
│ ├── [不需要] 查询 ← 搜索过滤
│ └── [不需要] 重置 ← 表单重置
├── 表格
│ ├── [需要] 详情 ← reslib-app-resource-detail
│ ├── [需要] 编辑 ← reslib-app-resource-edit
│ └── [需要] 删除 ← reslib-app-resource-delete
├── 批量操作栏
│ ├── [需要] 移动/复制 ← reslib-app-resource-move
│ ├── [需要] 批量删除 ← reslib-app-resource-batch-delete
│ └── [不需要] 取消选择 ← 选择交互
注意事项
- 宁缺毋滥:不确定是否需要控制的按钮,默认不加权限
- 权限码:格式为
appId-页面-操作语义,前端permission(xxx)与平台注册perms一致,注册流程见 jjb-button-permission-registration - 与后端一致:权限码必须在平台注册后,后端接口返回的数据中才会包含该权限码