子角色許可權的實現

來源:互聯網
上載者:User

 

(1)子角色的分類

子角色分為三類:欄位值、欄位、資料表。下面就三類子角色的實現進行說明。

 

 

(2)欄位值類(資料行)子角色的實現

如所示,是子角色2的欄位值類子角色許可權的記錄。RITEM是“資源項”欄位。欄位類的“資源項”的編碼規則為第1位是大寫英文字母“V”,表示資源類型,屬於第一部分。

隨後的一位或者多位大寫字母表示資料表簡碼,是屬於第二部分。比如的“VI12”和“VI17”的第2位是“I”, 該資料表簡碼I,從T_ZK_RESOURCE資源表查到是T_ZK_PROJECT 項目表。

最後的一位或者多位元字表示該資源順序號,是屬於第三部分。比如的“VI12”和“VI17”的數字12和數字17,表示T_ZK_PROJECT 項目表的項目ID為12和17的項目記錄,具體見。

 

 

子角色許可權_欄位值(資料行)_許可權圖:

實現指令碼如下:

(1)取欄位值類的子角色許可權

select

ritem,         --資源項

ritemlevel     --權限類別(禁止/允許)

from T_ZK_SUBROLE_C

where ritemtype='欄位值' and subroleid=*** order by ritem

說明:對得到的ritem欄位進行分析擷取包含的資料表代碼和該資料表的記錄ID;

 

(2)取欄位值類的子角色許可權對應的資料表名

select

tablename,     --資料表名

tablecname     --資料表中文名

from T_ZK_RESOURCE where tableaname='***'

說明:根據第一步擷取的資料表代碼,從T_ZK_RESOURCE資源表得到對應的資料表名;

 

(3)根據第二步擷取的資料表名和第一步擷取的記錄ID,形成該子角色的欄位值類許可權字串,如子角色為2,資料表名為T_ZK_PROJECT,記錄ID為12和17,則子角色2的欄位值類許可權字串為【12,17】,授予子角色2的使用者,在擷取可訪問項目的指令碼建議如下:

select * from T_ZK_PROJECT where projectid in(12,17) and admindivision=

上述查詢語句指令碼中from子句的T_ZK_PROJECT即資料表名,where子句中的“12,17”為欄位值類許可權字串。

 

 

(3)欄位類子角色的實現

如所示,是子角色2的欄位類子角色許可權的記錄。RITEM是“資源項”欄位。欄位類的“資源項”的編碼規則為第1位是大寫英文字母“C”,表示資源類型,屬於第一部分。

隨後的一位或者多位大寫字母表示資料表簡碼,是屬於第二部分。比如的“CI16”和“CI26”的第2位是“I”, 該資料表簡碼I,從T_ZK_RESOURCE資源表查到是T_ZK_PROJECT 項目表。

最後的一位或者多位元字表示該資源順序號,是屬於第三部分。比如的“CI16”和“CI26”的數字16和數字26,表示T_ZK_PROJECT 項目表的第16個欄位和第26個欄位,從T_ZK_COLUMN欄位表查到分別是“合約編號”和“刪除標誌”欄位。

最後如所示,是“CI16”和“CI26”資源項所對應的具體欄位。

 

子角色許可權_欄位(資料列)_許可權圖:

實現指令碼如下:

select

b.tablename,            --資料表名

b.columnname,          --欄位名

b.columnname,          --欄位中文名

b.columnaname,         --欄位簡名

a.ritemlevel            --權限類別(禁止/允許)

from T_ZK_SUBROLE_C a,T_ZK_COLUMN b

where a.ritem=b.columnaname and a.ritemtype='欄位' and a.subroleid=***

 

用以上指令碼得到子角色的欄位類許可權以後,在查詢該表記錄的任何模組均要遵照子角色所設定的許可權來執行。比如,子角色2禁止訪問T_ZK_PROJECT 項目表的“合約編號”和“刪除標誌”欄位,那麼“項目背景資訊”頁面模組則不能顯示這兩個欄位的資料。但是“項目修改”頁面模組則暫時不受子角色2的許可權所限制。

建議:以“項目背景資訊”頁面模組來實現子角色的欄位類許可權控制原理。欄位類的子角色許可權具有排他性。對同一資料表來說,權限類別要麼只設定“允許”許可權,要麼都設定“禁止”許可權。那麼,對於設定“允許”許可權的資料表來說,沒有設定的其他欄位則禁止訪問;對於設定“禁止”許可權的資料表來說,沒有設定的其他欄位則允許訪問。比如的子角色2,設定對CI16、CI26為禁止許可權,那麼除這兩個欄位以外的其他欄位,均允許訪問。

 

(4)資料表類子角色的實現

如所示,是子角色2的資料表類子角色許可權的記錄。RITEM是“資源項”欄位。欄位類的“資源項”的編碼規則為第1位是大寫英文字母“T”,表示資源類型,屬於第一部分。

隨後的一位或者多位大寫字母表示資料表簡碼,是屬於第二部分。比如的“TQ”和“TR”的第2位分別是“Q”和“R”, 這兩個資料表簡碼,從T_ZK_RESOURCE資源表查到是T_ZK_DEVICELOG路燈裝置基本資料曆史表和T_ZK_COMPONENTLOG路燈裝置組件資訊曆史表。具體見。

 

 

子角色許可權_資料表_許可權圖:

實現指令碼如下:

(1)取資料表類的子角色許可權

select

ritem,         --資源項

ritemlevel     --權限類別(禁止/允許)

from T_ZK_SUBROLE_C

where ritemtype='資料表' and subroleid=*** order by ritem

說明:對得到的ritem欄位進行分析擷取包含的資料表代碼;

 

(2)取資料表類的子角色許可權對應的資料表名

select

a.ritem,            --資源項

a.ritemlevel,       --權限類別(禁止/允許)

b.tablename,        --資料表名

b.tabelcname        --資料表中文名

from T_ZK_SUBROLE_C a,T_ZK_RESOURCE b

where substring(a.ritem,2,len(a.ritem)-1)=b.tableaname

and a.ritemtype='資料表' and a.subroleid=***

order by a.ritem

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.