用戶權限管理思路

RBAC的基本思想

  RBAC(角色訪問控制)的基本思想可簡單地用圖1來表示,即把整個訪問控制過程分成兩步:訪問權限與角色相關聯,角色再與用戶關聯,從而實現了用戶與訪問權限的邏輯分離。

  由於RBAC實現了用戶與訪問權限的邏輯分離,因此它極大的方便了權限管理。例如,如果一個用戶的職位發生變化,只要將用戶當前的角色去掉,加入代表新職務或新任務的角色即可,角色/權限之間的變化比角色/用戶關係之間的變化相對要慢得多,並且委派用戶到角色不需要很多技術,可以由行政管理人員來執行,而配置權限到角色的工作比較複雜,需要一定的技術,可以由專門的技術人員來承擔,但是不給他們委派用戶的權限,這與現實中情況正好一致。

  用戶權限在.net中的設計與實現

  利用.NET中的用戶控件實現權限控制的基本思想是:根據角色訪問控制(RBAC)的基本原理,給用戶分配一個角色,每個角色對應一些權限,然後利用ASP.NET中的用戶控件(UserControl)來判斷該用戶對應的角色是否對訪問頁面有訪問的權力。

  下面將從數據庫設計、添加角色和用戶控件的使用等三方面來闡述具體實現過程。

  1、數據庫中表的設計

  首先,在數據庫中設計功能模塊表、功能表和角色表等三個表。

  (1) 功能模塊表

  爲了管理好用戶的權限,首先要組織好系統的模塊,爲此設計了一個功能模塊表。見表1。


  (2) 功能表


  每個功能模塊所具有的子功能稱爲功能,如商品管理模塊goods(屬於功能模塊的範疇)包含商品信息查詢、商品信息更新、商品信息刪除、商品定價信息查詢以及商品定價信息更新五種功能,功能表的設計見表2。

  上面提到的例子可以作爲這樣幾條記錄分別插入功能模塊表和功能表。


insert into TModule values(0,'商品管理模塊','goods',5);
insert into Tfunction values(0,'商品信息查詢','selectgoods',0);
insert into Tfunction values(1,'商品信息更新','updategoods',0);
insert into Tfunction values(2,'商品信息刪除','deletegoods',0);
insert into Tfunction values(3,'商品定價信息查詢','selectgoodsprice',0);
insert into Tfunction values(4,'商品定價信息更新','updategoodsprice',0);

  (3) 角色表


  角色表的設計關鍵在於角色值的定義,它是一個由0和1組成的類似二進制數的字符串。而功能表中的funcNo (功能編號)字段表示該功能在角色表的roleValue (角色值)字段中的位置,如果該位置對應的數值是0,表示該角色無此權限,如果值爲1,則表示該角色擁有此權限。如角色普通會員的角色值爲100100…00(共100位),如上所示,商品信息查詢的功能編號爲0,角色值100100…00的第0位爲1,所以該普通會員角色擁有商品信息查詢的功能;相反,該角色值的第1位爲0,而功能編號爲1 的功能爲商品信息更新,所以該普通會員角色沒有商品信息更新的權限。它們的關係可由圖2來表示。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章