日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mondrian利用在Schema中的设置角色来实现行级权限控制数据

發布時間:2024/3/26 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mondrian利用在Schema中的设置角色来实现行级权限控制数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:之前有一篇專門描述Saiku如何利用schema中的角色控制來達到行級權限控制操作。

https://blog.csdn.net/Joe192/article/details/100043346

在這篇主要更深入的描述Mondrian中是如何利用schema中的角色結合saiku來實現行級權限操作。

首先得了解schema行級權限,角色涉及的標簽屬性

Role--》角色標簽

SchemaGrant--》schema授權標簽?SchemaGrant access: all, none, and all_dimensions

CubeGrant--》cube授權標簽??cube grant access: all or none

HierarchyGrant--》Hierarchy授權標簽?access: all, none, and custom

MemberGrant--》Member授權標簽??access: all and none.

DimensionGrant--》Dimension標簽授權?access: all or none

<Schema metamodelVersion='4.0' name='t_tests' quoteSql='false'><PhysicalSchema><Table name='t_tests'/></PhysicalSchema><Cube caption='t_tests' name='t_tests'><Dimensions><Dimension caption='t_tests' key='id' name='t_tests' table='t_tests'><Attributes><Attribute caption='area' datatype='String' hasHierarchy='true' keyColumn='area' name='area' table='t_tests' visible='true'/><Attribute caption='country' datatype='String' hasHierarchy='true' keyColumn='country' name='country' table='t_tests' visible='true'/><Attribute caption='province' datatype='String' hasHierarchy='true' keyColumn='province' name='province' table='t_tests' visible='true'/><Attribute caption='city' datatype='String' hasHierarchy='true' keyColumn='city' name='city' table='t_tests' visible='true'/><Attribute caption='street' datatype='String' hasHierarchy='true' keyColumn='street' name='street' table='t_tests' visible='true'/><Attribute caption='name' datatype='String' hasHierarchy='true' keyColumn='name' name='name' table='t_tests' visible='true'/><Attribute caption='id' datatype='String' hasHierarchy='true' keyColumn='id' name='id' table='t_tests' visible='false'/></Attributes><!--<Hierarchies><Hierarchy name='ts' allMemberName='All t_test'><Level attribute='country'/><Level attribute='province'/><Level attribute='city'/><Level attribute='street'/></Hierarchy></Hierarchies>--></Dimension></Dimensions><MeasureGroups><MeasureGroup name='t_tests' table='t_tests'><DimensionLinks><FactLink dimension='t_tests'/></DimensionLinks><Measures><Measure aggregator='sum' caption='age' column='age' datatype='Numeric' formatString='#,###.000' name='age' table='t_tests'/></Measures></MeasureGroup></MeasureGroups></Cube><Role name='ROLE_SA'><SchemaGrant access='none'><CubeGrant cube='t_tests' access='all'><!--<HierarchyGrant hierarchy='[ts]' access='custom' topLevel='[ts].[country]' bottomLevel="[ts].[city]"><MemberGrant member='[t_tests].[ts].[中國].[陜西省]' access='all'/><MemberGrant member='[ts].[country].[中國].[陜西省].[西安市]' access='all'/><MemberGrant member='[ts].[country].[中國].[廣東省].[廣州市]' access='all'/><MemberGrant member='[ts].[country].[美國].[加州].[加州市]' access='all'/></HierarchyGrant>--><!--<DimensionGrant dimension="[t_tests].[country].[中國]" access="all"/>--><!--<HierarchyGrant hierarchy='[Measures]' access='custom'><MemberGrant member='[Measures].[age]' access='none'/></HierarchyGrant>--><HierarchyGrant hierarchy='[t_tests].[city]' access='custom'><MemberGrant member='[t_tests].[city].[西安市]' access='all'/><MemberGrant member='[t_tests].[city].[廣州市]' access='all'/></HierarchyGrant></CubeGrant></SchemaGrant></Role></Schema>

A、通過行級權限控制維度值

<HierarchyGrant hierarchy='[ts]' access='custom' topLevel='[ts].[country]' bottomLevel="[ts].[city]">

這行代碼,hierarchy='[ts]'指層級name='ts'的,access='custom'自定義,topLevel='[ts].[country]' bottomLevel="[ts].[city]"

范圍訪問的維度。

使用層級授權必須創建層級才能達到行級權限控制,否則不起作用。

B、如果不想使用層級卻想達到和層級一樣控制維度咋辦了,只要通過兩步設置就能搞定。

第一步:Attribute的hasHierarchy屬性必須為true

第二步:直接使用維表的name,t_tests.city,city為Attribute的name屬性,范圍屬性topLeve和bottomLevel就不起作用了

<HierarchyGrant hierarchy='[t_tests].[city]' access='custom'>
? ? ? ? ? <MemberGrant member='[t_tests].[city].[西安市]' access='all'/>
? ? ? ? ?<MemberGrant member='[t_tests].[city].[廣州市]' access='all'/>
?</HierarchyGrant>

C、通過行級權限控制度量,如何實現

<HierarchyGrant hierarchy='[Measures]' access='custom'>
? ? ? ? ? <MemberGrant member='[Measures].[age]' access='none'/>
</HierarchyGrant>

這塊直接就不顯該度量。

D、如果控制整個維度的行級權限,直接使用DimensionGrant

<DimensionGrant dimension="[t_tests]" access="all"/>

其中dimension="[t_tests]",t_tests就是維表的name屬性。

總結

以上是生活随笔為你收集整理的Mondrian利用在Schema中的设置角色来实现行级权限控制数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。