隨筆-11  評論-16  文章-1  trackbacks-0

          第五章

          細粒度數(shù)據(jù)查詢權限

          (下)

           

           

          上一章講解通過設計器,設計出數(shù)據(jù)查詢,并在線測試。本章講解如何快速定制數(shù)據(jù)查詢,如果將業(yè)務代碼中的if else邏輯判斷去掉,如何將這種細粒度的權限集成到業(yè)務系統(tǒng)。

           

          快速定制數(shù)據(jù)查詢

          上章定制了“查詢所有員工”數(shù)據(jù)查詢。下面我們通過復制的方式快速定制“查詢本分公司及下屬營業(yè)部員工”和“查詢本營業(yè)部員工”兩個數(shù)據(jù)查詢。

           

          打開權限設計器  http://localhost:8080/mydemo/metadmin/designer

          按照如下步驟操作,來定制“查詢本分公司及下屬營業(yè)部員工”數(shù)據(jù)查詢:

          1.         右擊“查詢所有員工”,選擇彈出菜單中“復制”菜單項;

          2.         在彈出的對話框中,名稱欄輸入“查詢本分公司及下屬營業(yè)部員工”,描述欄輸入“分公司用戶具有權限查看”,點擊“確認”按鈕;

          3.         點擊“查詢本分公司及下屬營業(yè)部員工”,選擇“WHERE”標簽頁,修改WHERE條件;

          4.         右擊“條件組”,選擇“新增條件組”;

          5.         修改該條件組的“連接符”為“OR”;

          6.         右擊剛才新增的條件組,選擇“新增 二元條件”;

          7.         選擇第一個字段為“company.id

          8.         右擊第二個字段,將該字段類型替換為“用戶屬性”,并選擇“companyId”用戶屬性;

          9.         右擊剛才新增的條件組,選擇“新增 二元條件”;

          10.     選擇第一個字段為“company.parentId”;

          11.     右擊第二個字段,將該字段類型替換為“用戶屬性”,并選擇“companyId”用戶屬性;

          12.     點擊“保存”按鈕。

           

          下圖示:(復制數(shù)據(jù)查詢)


          下圖示:(改變字段類型)


          按照如下步驟操作,來定制“查詢本營業(yè)部員工”數(shù)據(jù)查詢:

          1.         右擊“查詢所有員工”,選擇彈出菜單中“復制”菜單項;

          2.         在彈出的對話框中,名稱欄輸入“查詢本營業(yè)部員工”,描述欄輸入“營業(yè)部用戶具有權限查看”,點擊“確認”按鈕;

          3.         點擊“查詢本營業(yè)部員工”,選擇“WHERE”標簽頁,修改WHERE條件;

          4.         右擊“條件組”,選擇“新增 二元條件”;

          5.         選擇第一個字段為“company.id

          6.         右擊第二個字段,將該字段類型替換為“用戶屬性”,并選擇“companyId”用戶屬性;

          7.         點擊“保存”按鈕。

          用戶分類

          細粒度權限控制,核心問題就是針對不同用戶或者不同類型用戶,采取不同控制。Metadmin采用用戶分類來描述不同用戶類型。用戶分類在整個業(yè)務系統(tǒng),在各個權限設置時候都可以復用。

           

          示例程序,我們要創(chuàng)建三個用戶分類:總公司用戶、分公司用戶和營業(yè)部用戶。

          總公司用戶的規(guī)則是:用戶的機構級別等于1;

          分公司用戶的規(guī)則是:用戶的機構級別等于2;

          營業(yè)部用戶的規(guī)則是:用戶的機構級別等于3。

           

          在權限設計器執(zhí)行如下步驟,完成“總公司用戶”用戶分類定制:

          1.         右擊用戶分類樹形結構根節(jié)點,選擇“新增 用戶分類”;

          2.         在彈出對話框里面,名稱處輸入“總公司用戶”;

          3.         在變量窗口,定義用戶屬性值變量companyLevel,將用戶屬性companyLevel輸入該變量;

          4.         在變量窗口,定義固定值變量level,其值等于1

          5.         在表達式定義窗口,右擊根節(jié)點,選擇“添加Binary表達式”;

          6.         第一個變量選擇companyLevel,操作符選擇“=”,第二個變量選擇level;

          7.         點擊“保存”按鈕,定制完畢。

           

          此時,可以在線測試該用戶分類是否有效。點擊“測試”標簽頁,選擇用戶進行測試。

           

          下圖示:(定制總公司用戶)


           

          下圖示:(測試總公司用戶分類,“柴其貴”測試結果)


           

          下圖示:(測試總公司用戶分類,“李朵朵”測試結果)


           

          通過,復制方式快速定制“分公司用戶”和“營業(yè)部用戶”兩個用戶分類。具體過程在此不做敘述。

          細粒度權限設置

          Metadmin專業(yè)細粒度權限管理中間件,強大優(yōu)勢表現(xiàn)為:

          1.         完全將權限邏輯從業(yè)務系統(tǒng)中分離出來,且通過界面,引導開發(fā)人員配置出權限邏輯;

          2.         這些權限邏輯可以在線測試;

          3.         采用分類機制,免去了業(yè)務系統(tǒng)里面if else判斷,并且非常直觀地在權限設計器展現(xiàn)出本系統(tǒng)的權限邏輯;

           

          按照如下步驟完成最后一步定制過程,(整個過程看起來比較長,熟練后3分鐘即可定義完畢):

          1.         在“權限”分類欄,新建“查詢員工”權限,輸入相關信息;

          2.         點擊“查詢員工”權限;

          3.         點擊“新增”圖標,給查詢授權,新增3條授權策略,如下圖示。

          4.         點擊“保存”圖標。

           

          下圖示:“查詢員工”細粒度授權規(guī)則:


           

          此時,可以點擊“測試查詢授權”標簽頁,選擇用戶進行測試。

          與業(yè)務系統(tǒng)集成

          一般情況下,開發(fā)者會采用String常量形式引用權限,而不是int型權限id。

          可以點擊權限分類欄上面的,“導出”圖標,導出常量。將常量保存到業(yè)務系統(tǒng)常量類。

           

          業(yè)務系統(tǒng),不管是jsp/servlet/manager或者任意其他地方,需要調用該權限,獲取當前用戶能查詢到的員工。調用MetadminService.query( Privilege.QUERY_EMPLOYEE, user, null ),即可獲得user能查詢到的員工數(shù)據(jù)集合(java.util.Collection),每個元素類型是org.back.demo.Employee,在設計SQL時輸入的映射類。

          Metadmin提供了很多查詢接口,還有分頁、自定義查詢和查詢數(shù)據(jù)條數(shù)等,詳情參加javadoc http://www.metadmin.com/doc/javadoc/index.html

           

          posted on 2009-06-21 21:47 細粒度權限管理 閱讀(2122) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2009年6月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汝城县| 万载县| 土默特右旗| 乐业县| 江西省| 周宁县| 邮箱| 兖州市| 茌平县| 广南县| 花莲市| 双鸭山市| 格尔木市| 维西| 麻城市| 迭部县| 延川县| 古蔺县| 泸定县| 阿拉尔市| 吉木萨尔县| 乌兰县| 崇左市| 资兴市| 卢湾区| 津南区| 龙州县| 扬州市| 黔西县| 贵州省| 讷河市| 思茅市| 阿荣旗| 元朗区| 武川县| 昆山市| 灵丘县| 北碚区| 车险| 金湖县| 凤台县|