权限管理概览
本文档详细描述了系统的权限管理机制,包括多角色权限继承、行权限自动传播、变量模板解析等核心功能。
核心概念
实体定义
权限维度
多角色权限继承
权限获取流程
用户可拥有多个角色,系统在获取权限时会自动合并所有角色的权限:
合并规则
表权限合并
- 规则:取各角色中最宽松的权限
- 优先级:可写 > 只读 > 无权限
行权限合并
- 规则:取各角色行权限的并集(逻辑"或")
- 实现:使用
$or运算符合并多个角色的过滤条件
列权限合并
- 规则:白名单优先,任一角色允许即允许访问
行权限自动传播
设计目的
当实体之间/实体和事件之间存在关联关系(通过实体类型的字段)时,被指向的 Schema 的行权限可以自动传播给当前 Schema,减少重复配置。
传播规则
传播算法
系统使用图算法实现行权限自动传播:
- 构建图:每个 Schema 作为节点,
ref关系作为边 - 识别叶子节点:找出所有出边为 0 的节点(无引用其他实体)
- 权限传播:
- 如果叶子节点有行权限
- 且只有一个父节点引用它(单一引用来源)
- 则将权限传播给父节点
- 迭代处理:删除已处理的叶子节点,重复步骤 2-3
传播条件
传播示例
假设有以下数据模型和权限配置:
场景:在地理位置表上设置了"大区 = 华东大区"的行权限。
传播后,店铺表的权限自动变为:
效果:单独查询店铺表时,只能查到"位置"属于华东大区的店铺。
传播限制
以下情况不会传播权限:
- 多个父节点引用同一个子节点(避免歧义)
- 叶子节点没有配置行权限
- 存在循环引用
变量模板解析
支持的变量
系统支持在行权限中使用变量模板,实现动态权限控制:
前端操作示例

使用示例
完整处理流程
配置建议
角色设计
- 按职能划分:如管理员、区域经理、店员等
- 避免重叠:减少角色间权限冲突
- 粒度适中:过细会增加管理成本
权限配置
- 优先在叶子实体配置:利用自动传播减少重复配置
- 合理使用变量:实现基于用户属性的动态权限
- 定期审查:确保权限配置与业务需求一致

