11 BO数据权限控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、在数据库新建权限控制表,记录登录人员及其拥有的权限,下面的例子是基于MS SQL Server 2005和BO R2:
CREATE TABLE SIS_CTL_User(
name varchar(50),--登录人员ID
user_desc varchar(50),--登录人员描述,可为空
Region varchar(20),--有数据权限的区域
country varchar(10),--有数据权限的国家
Sub_Region varchar(10),--有数据权限的小区
City varchar(20),--有数据权限的城市
brand varchar(20),--有数据权限的品牌
Sub_Brand varchar(20)----有数据权限的子品牌
)
对于地区和产品2个权限,如果记录Sub_Region的数据权限,则Region可以不填,其余类似,即只需要将拥有权限的那层填充即可,上级、下级不需要填。
模拟测试数据:
用户test1拥有Region EOC的权限,用户test2拥有Sub_Region WOC1、WOC2的权限:insert into SIS_Ctl_User(name,region)
values('test1','EOC');
insert into SIS_Ctl_User(name,sub_region)
values('test2','WOC1');
insert into SIS_Ctl_User(name,sub_region)
values('test2','WOC2');
2、在BO控制台将test1加入组Region,test2加入组Sub_Region(目的是将权限控制应用在组上,如果是对单个用户应用权限控制,则不需要加入组)
3、在Universe配置权限控制:
新建2个限制,一个是限制大区的权限,一个限制小区的权限:
新建访问限制,在新开的窗口输入限制名称“大区权限”,在下面的部分选择“行”,
然后“添加”,在新开的窗口指定“表”,这里表一般是维度表,比如区域维度、产品维度,建议通过选择而不是手动输入,选择维度表“SIS_Dim_Region”;在where部分输入限制脚本,脚本里获得登录用户,与SIS_CTL_User表的name关联,SIS_CTL_User表的Region 与前面选择的维度表SIS_Dim_Region.Region关联,脚本如下,注意,脚本最前面不要加where:exists(select1 from SIS_CTL_User A where =@Variable('BOUSER')and A.Region=SIS_Dim_Region.Region)
然后,“确定”,“确定”;
现在限制建好了,但是要把这个限制应用在用户组上,在“管理访问限制”窗口左边是存在的限制,在右边“添加用户或组”,选择“Region”组,然后“应用”,不然右边的“限制”列显示“<无>”,设置好的界面如下:
接下来我们创建小区的限制,与上面的步骤类似,只是限制脚本用的是Sub_Region,选择的组是Sub_Region组:
确定,保存Universe,导出到BO服务器。4、
test1登录,刷新报表后只显示EOC的数据:
test2登录,只显示WOC1、WOC2的数据: