BI前端实践 10:基于语义层的权限控制

实践目标

元数据中定义了整个数据库的表信息,在使用它时,要控制某些用户不能看某些表、某些字段、或不能看表中的某些数据。

控制参与多维分析的表、字段范围

由元数据生成的字典文件,之前已经认识过,它里面有个分类项功能,简单说就是挑选一些表、字段、维度,组成一个完整的大分类,给某些特定用户使用,从而限制他们看到的信息范围。比如下面的“员工分析”这个分类中,就去掉了订单、产品相关的表,区域表中去掉了区域级别字段:

在多维分析jsp中设置使用上面这个orders.dct,同时设置使用“员工分析”这个分类项:

这时,再访问jsp,看到只剩下选出的表和字段了:

再来看另外一个细节,上面的区域表的父区域ID、员工表的负责城市、包括隐藏了的发货城市、收货城市,这些外键字段都能展开出关联的区域表,如果想统一的控制这些外键不再展开,不选出维项中的区域维就可以了:

保存后再刷新多维分析页面,看到所有指向区域表的外键字段就不能展开了:

用预设条件限制表内数据范围

普通用户,不希望他们看到部门表中的全部数据,要去掉总办室、销售 1 部,销售 2 部, 可以通过在 session 中预设表条件限制部门表的取数范围:

再分析的时候,用户在界面上不用设置任何条件,结果就自动去掉了总办室、销售 1 部,销售 2 部这三个部门了:

即便分析的时候不选出部门名称,从控制台及界面数据上都能观察到,预设的部门名称限制条件仍然生效了:

假如很多表都有可视条件,可以用 DQL 设计器通过元数据文件直接生成一个可视文件(vsb),在这个可视文件中编辑表的预置条件:

然后 jsp 里使用这个 orders.vsb,界面上再做分析,同样会看到数据被成功限制住了:

假如另外一个用户需要不同的权限条件,就再制作另外一个可视文件 orders2.vsb:

假如权限条件的情况太多,制作很多 vsb 比较麻烦,可以用宏替代的方式进一步改善,条件中使用 ${宏名称},比如下面的 ${exclude}:

之后在 jsp 中,根据登录用户动态设置宏 exclude 的值就可以了:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值