| name | permission-system-design |
| description | 设计权限系统架构,角色作为预设而非独立权限,支持细分权限与角色预设的灵活组合。用于:权限系统数据模型设计、API 设计、架构方案评审、设计检查清单生成。Use when: permission, RBAC, role, access control, authorization, 权限, 角色, 授权. |
| argument-hint | [项目描述或现有权限系统描述] |
| user-invocable | false |
权限系统架构设计
核心设计理念
角色是预设,不是权限本身。
传统 RBAC 将权限绑定到角色,用户只能通过角色获得权限。本设计理念将角色降级为"权限预设包",用户可以直接拥有细分权限,角色只是批量分配的快捷方式。
数据模型关系
用户 ──┬── 直接权限(细分权限,可单独授予/撤销)
└── 角色预设 ── 预设包含的权限(模板,非绑定)
关键区别:
- 用户的最终权限 = 直接权限 ∪ 角色预设包含的权限
- 修改角色预设不影响已单独授予用户的直接权限
- 管理员可以:分配角色、撤销角色、单独授予/撤销任意细分权限
设计检查清单
1. 数据模型层
2. 权限粒度设计
3. API 设计层
4. 管理员能力
5. 安全与边界
架构方案文档模板
当需要输出完整架构方案时,按以下结构组织:
1. 概述
2. 数据模型
- ER 图(实体关系)
- 各表字段定义与索引设计
- 权限合并算法(用户最终权限的计算逻辑)
3. API 设计
- RESTful 或 GraphQL 接口定义
- 请求/响应示例
- 错误码定义
4. 权限校验流程
- 请求 → 中间件/拦截器 → 权限查询 → 决策 → 缓存策略
- 实时校验 vs 缓存校验的权衡
5. 管理界面设计建议
- 用户权限管理视图(合并视图 + 来源追溯)
- 角色预设管理视图
- 权限矩阵视图(用户 × 权限 的交叉表)
6. 迁移方案(如改造现有系统)
- 从传统 RBAC 迁移的步骤
- 数据迁移脚本
- 灰度切换策略
实施步骤
- 收集需求:了解项目的技术栈、用户规模、权限复杂度
- 设计数据模型:根据检查清单第 1-2 项输出 ER 图和字段定义
- 设计 API:根据检查清单第 3 项输出接口文档
- 评审方案:使用检查清单逐项验证
- 输出文档:按架构方案文档模板组织最终交付物
参考资源