用户同时加入多个角色时,权限如何合并
一个用户可以同时加入多个应用角色。不同角色可能对同一工作表配置不同的数据和操作权限,系统会将这些权限进行合并,确定用户最终拥有的权限。
多角色权限合并的核心规则是:当多个角色都配置了同一工作表的权限时,系统会按视图分别合并权限。同一权限层级取各角色权限的并集,但下层权限不能突破上层权限的限制。
权限配置的三个层级
工作表的数据权限实际基于视图进行配置。每个视图下的权限可分为以下三个层级。
-
L1:视图下可操作权限
用于控制用户在当前视图中是否可以:
- 查看记录
- 编辑记录
- 删除记录

L1 决定某项操作是否开放,是后续权限生效的前提。
例如,当前视图不允许编辑记录,那么即使 L2 配置了可编辑全部记录、L3 配置了可编辑所有字段,用户在该视图中仍然不能编辑记录。
-
L2:权限的记录范围
当 L1 已允许某项操作时,L2 进一步控制该操作可以作用于哪些记录。例如:
- 可以查看全部记录,还是仅查看自己加入的记录
- 可以编辑全部记录,还是仅编辑自己拥有的记录
- 可以删除全部记录,还是仅删除指定范围内的记录

-
L3:字段和功能权限
当用户可以查看、新增或编辑某条记录时,L3 进一步控制用户可以操作哪些字段和功能,包括:
- 新增记录时可见或可编辑的字段
- 查看记录时可见的字段
- 编辑记录时可编辑的字段
- 讨论、分享、导入、打印等系统操作
- 自定义动作

什么情况下会合并多角色权限
只有当用户加入的多个角色都配置了同一工作表的权限时,才需要进行多角色权限合并。
例如:
- 角色 1 配置了工作表 A
- 角色 2 也配置了工作表 A
用户同时加入两个角色后,系统会合并两个角色对工作表 A 的权限。
如果多个角色分别配置不同的工作表,则不存在权限冲突,无需合并。
例如:
- 角色 1 只配置了工作表 A
- 角色 2 只配置了工作表 B
用户同时加入两个角色后:
- 工作表 A 使用角色 1 的权限
- 工作表 B 使用角色 2 的权限
多角色权限如何合并
系统会按照以下顺序合并权限:
- 找出多个角色共同配置的工作表。
- 按工作表中的每个视图分别计算权限。
- 将各角色在同一视图下的权限拆分为 L1、L2、L3 三个层级。
- 同一层级的权限取并集。
- 根据 L1、L2、L3 的上下级关系,确定用户最终可以执行的操作。
可以将合并规则概括为:同一工作表、同一视图、同一权限层级分别取并集,再由上层权限限制下层权限。
其中:
- L1 决定是否允许执行某项操作
- L2 决定可以对哪些记录执行该操作
- L3 决定可以操作哪些字段和功能
即使 L2 或 L3 配置了 更大的权限,只要 L1 不允许对应操作,该权限就不会生效。
示例1
角色1的配置图:

角色2的配置图:

合并后的权限:
两个角色都配置了同一工作表,因此需要合并权限。
系统会按视图分别列出两个角色的 L1、L2、L3 权限,再对相同层级的权限取并集,得到用户在各视图下的最终权限。

示例2
角色1的配置图:

角色2的配置图:

合并后的权限:
两个角色都配置了同一个表的权限,存在权限合并的情况。
如下 表,我们将视图的权限按三个层级梳理,表中相同层级的权限进行上下合并取并集(取最大的权限),得到用户在此视图下最后的权限。

为什么角色 1 中视图 A 和视图 B 的权限不同
角色 1 在 L2 中配置了可编辑全部记录,在 L3 中配置了可编辑所有字段,但视图 B 的 L1 权限不允许编辑。
因此,这些编辑权限应用到视图 B 时不会生效。用户在视图 B 中:
- 不能编辑任何记录
- 不能编辑任何字段
这说明 L2 和 L3 的权限不能单独生效,必须以 L1 已开放对应操作为前提。
这篇文档对你有帮助吗?