目录:
1. 概述编辑
1.1 背景
企业中存在复杂的层级关系,针对面向全体员工的看板,希望不同层级的人员可以查看到对应权限下的数据。
原始方案:使用一张权限宽表记录用户拥有的不同维度的权限信息,并在每个业务数据表上配置行权限。如下图所示:
注:本文示例使用品牌和区域维度,用户可根据实际使用场景进行调整。
1.2 问题描述
原始方案在真实场景中,可能会出现以下问题:
数据冗余:用户和维度权限间为多对多关系,权限宽表中有大量冗余信息。
权限宽表不易于动态权限配置:若新增一个维度,有 n 个不同的维度值,且用户数量为 m ,则在权限宽表中共需要插入 m * n 条记录。
1.3 解决方案
我们提出「四联表」模型,将一张权限宽表拆分为多个维度权限表和用户信息表,独立维护用户在不同维度上的权限。如下图所示:
优点:
减少数据冗余。
用户在每个维度上的权限更清晰,且维度权限表为结构化数据,易于维护。
新增业务数据表时,无需配置行权限,关联对应的维度表即可。
维度可以无限扩展,且互不影响。新增维度时,无需在每张业务数据表上配置行权限,在新增的维度表上配置一次行权限即可。
2. 四联表模型编辑
2.1 模型介绍
四联表模型需要分别创建不同维度的「维度表」和「维度权限表」。其中,将「维度权限表」与「用户信息表」进行关联,记录用户拥有的不同维度的权限信息。再将「维度表」与「业务数据表」进行关联,只在「维度表」上配置行权限,即可实现对多业务数据表行权限限制。
如下图所示:
2.1 数据准备
在配置行权限前,用户需提前准备以下类型的数据表:
注:需确保维度表的每个字段值都是唯一的。
1)用户信息表:包含用户的唯一标识等字段。
2)维度表:
3)维度权限表:用户与权限的关系
4)业务数据表:
2.2 模型搭建
1)建立以下两类关联,详情请参考:设置关联 。
关联「用户信息表」与「维度权限表」,关联关系为 1:N
关联「维度表」与「业务数据表」,关联关系为 1:N
设置关联后,系统会自动读取表间关联,可以通过关联关系获取到相应数据。
2)设置登录用户所在字段。
3)打开「维度表」和「业务数据表」的「组件数据」使用权限,详情请参考:公共数据组件数据权限 。
4)在「维度表上」配置行权限,获取到登录用户有权限的维度,最终查看到的数据为多个维度的交集数据。
模型搭建效果如 2.1 节图示。
3. 动态配置行权限编辑
企业的组织结构、职能部门、岗位在经营中会经常发生变化,如何针对变化部分进行权限配置呢?
本节提供新增维度和新增业务数据表的权限处理思路。
3.1 新增维度
「四联表」模型支持无限扩展维度,并可以方便快捷地进行配置和维护。
新增维度时,用户需要配置相关关联,并在新增的维度表上配置一次行权限即可,系统会自动取多个维度的交集数据。
具体操作步骤如下:
1)准备一张「维度表」和一张「维度权限表」。
2)建立以下关联:
关联「用户信息表」与新增「维度权限表」,关联关系为 1:N
关联「维度表」与相关「业务数据表」,关联关系为 1:N
3)在新增的维度表上配置一次行权限。如下图所示:
3.2 新增业务数据表
新增业务数据表时,无需配置行权限,与对应的维度表进行关联即可。
例如:新增「业务数据表 XXX」 ,此表与「区域维度表」有逻辑关系,则将其与「区域维度表」进行关联。如下图所示:
4. 示例编辑
公司领导、区域主管、区域组员间存在树状关系,需要根据不同门店维度为用户分配不同权限。
实现效果为公司领导可以看到全部数据,区域主管看到对应区域的数据,区域组员只能看到自己的数据。详情请参考:多层级权限分配 。