...
下面我们会举出一些例子,从不同场景的数据权限,通过较合适的实现方式进行实现。
...
一、查看所在区域的数据
锚 | ||||
---|---|---|---|---|
|
用例说明
演示数据:
在数据库中,有以下数据
目标要求:
在业务需求中,我们的用户会有各自的结构,我们希望每个用户进入系统能够看到自己所属机构的数据。比如华南业务员进入系统,只能看到华南的数据。华东业务员进入系统,只能看到华东的数据。
...
在系统中先创建两个用户组。华南和华东用户组,如下:
其中,我们可以设置用户组的名称、编号或者别名之一与我们实际业务上的机构名称相同。此例中设置的是用户组名称。
...
(1)找到业务需求中那张所属的数据源,右键-》设置数据权限
(2)控制不同机构用户看到所属区域的数据。需要对数据表 map_data1中的c_region进行限制。找到表map_data1,右键->设置
(3)在数据权限编辑器中,设置表中字段c_region= 系统函数 CurrentUserDefaultDepartmentName
(4)范围定义中选择用户组“华南”和“华东”,适用于此范围
(5)保存数据权限设置。此时基于此数据源建立的可视化查询所制作的报表已经能够实现权限控制了。并且基于数据源创建的业务主题,以及基于此数据源或者此数据源上的业务主题创建的组合分析、透视分析也能够实现权限控制。
...
在系统中先创建好用户组。华南和华东用户组,以及其下的深圳、广州、上海、江苏用户组,如下:
其中,我们可以设置用户组的名称、编号或者别名之一与我们实际业务上的机构名称相同。此例中设置的是用户组名称。
...
在数据源或者对应的业务主题下创建过滤器,并且勾选“默认生效”以及“在分析界面隐藏”
注意:报表的参数设置需要使用参数默认值。
...
通过系统函数中的CurrentUserAllDepartmentIDRecursively获取到用户所属于的所有机构的ID,然后和数据进行过滤
1.参考“一、查看所属机构的数据一、查看所在区域的数据”,设置数据源、业务主题、sql的权限,并且将权限语句修改为 c_area in (CurrentUserAllDepartmentIDRecursively()).
...
这个表达式先获取当前用户名,然后到permiss2表中查询用户可看的机构,并返回这些机构名称
3.设置数据权限
参考“一、查看所属机构的数据一、查看所在区域的数据”,设置数据源、业务主题、sql查询的权限。并且将全选语句修改为c_area in 用户可看区域这个用户属性。
...
在报表对应的sql查询或者原生sql查询中,添加如下where语句
三、查看权限内的数据
用例说明
查看权限内的数据,这种权限一般是指这样的场景:华南业务员进入系统,除了查看到华南及其下属机构深圳、广州的数据之外,还可以查看到华东的数据;华东业务员登录进入系统,可以看到华东及其下属机构上海、江苏的数据。存在这种跨机构的数据查询。查看权限内的数据,这种权限一般是指这样的场景:华南业务员进入系统,除了查看到华南及其下属机构深圳、广州的数据之外,还可以查看到华东的数据;华东业务员登录进入系统,可以看到华东及其下属机构上海、江苏的数据。存在这种跨机构的数据查询。又或者数据权限和用户组并没有直接的关联关系等
实现步骤
这种查看权限内的数据的方式,一般采用在数据库中维护权限表,并且通过用户属性来获取,设置其数据权限。
...
在过滤器中将区域字段与系统函数、用户属性、参数等相关联
2.设置默认生效和在分析界面隐藏
勾选此过滤器的“默认生效”和“在分析界面隐藏”。
通过这种方式,可以实现无论用户如何操作组合分析和透视分析报表,由于过滤器始终生效,因此用户只能够查看权限内的数据。
...