BI 前端实践 10:基于语义层的权限控制
实践目标
元数据中定义了整个数据库的表信息,在使用它时,要控制某些用户不能看某些表、某些字段、或不能看表中的某些数据。
控制参与多维分析的表、字段范围
由元数据生成的字典文件,之前已经认识过,它里面有个分类项功能,简单说就是挑选一些表、字段、维度,组成一个完整的大分类,给某些特定用户使用,从而限制他们看到的信息范围。比如下面的“员工分析”这个分类中,就去掉了订单、产品相关的表,区域表中去掉了区域级别字段:
在多维分析jsp中设置使用上面这个orders.dct,同时设置使用“员工分析”这个分类项:
这时,再访问jsp,看到只剩下选出的表和字段了:
再来看另外一个细节,上面的区域表的父区域ID、员工表的负责城市、包括隐藏了的发货城市、收货城市,这些外键字段都能展开出关联的区域表,如果想统一的控制这些外键不再展开,不选出维项中的区域维就可以了:
保存后再刷新多维分析页面,看到所有指向区域表的外键字段就不能展开了:
用预设条件限制表内数据范围
普通用户,不希望他们看到部门表中的全部数据,要去掉总办室、销售 1 部,销售 2 部, 可以通过在 session 中预设表条件限制部门表的取数范围:
再分析的时候,用户在界面上不用设置任何条件,结果就自动去掉了总办室、销售 1 部,销售 2 部这三个部门了:
即便分析的时候不选出部门名称,从控制台及界面数据上都能观察到,预设的部门名称限制条件仍然生效了:
假如很多表都有可视条件,可以用 DQL 设计器通过元数据文件直接生成一个可视文件(vsb),在这个可视文件中编辑表的预置条件:
然后 jsp 里使用这个 orders.vsb,界面上再做分析,同样会看到数据被成功限制住了:
假如另外一个用户需要不同的权限条件,就再制作另外一个可视文件 orders2.vsb:
假如权限条件的情况太多,制作很多 vsb 比较麻烦,可以用宏替代的方式进一步改善,条件中使用 ${宏名称},比如下面的 ${exclude}:
之后在 jsp 中,根据登录用户动态设置宏 exclude 的值就可以了:
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?