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來表示。
RBAC(角色訪問控制)的基本思想
rbac 角色訪問控制 的基本思想可簡單地用圖1來表示,即把整個訪問控制過程分成兩步 訪問許可權與角色相關聯,角色再與使用者關聯,從而實現了使用者與訪問許可權的邏輯分離。由於rbac實現了使用者與訪問許可權的邏輯分離,因此它極大的方便了許可權管理。例如,如果乙個使用者的職位發生變化,只要將使用者當前...
角色訪問控制(RBAC)
角色訪問控制 rbac 引入了role的概念,目的是為了隔離user 即動作主體,subject 與privilege 許可權,表示對resource的乙個操作,即operation resource role作為乙個使用者 user 與許可權 privilege 的 層,解耦了許可權和使用者的關係...
角色訪問控制(RBAC)
角色訪問控制 rbac 引入了role的概念,目的是為了隔離user 即動作主體,subject 與privilege 許可權,表示對resource的乙個操作,即operation resource role作為乙個使用者 user 與許可權 privilege 的 層,解耦了許可權和使用者的關係...