角色訪問動態生成使用者許可權選單樹

2021-07-05 06:53:00 字數 4142 閱讀 7632

角色訪問動態生成使用者許可權選單樹;一、引言;隨著.net和j2ee開發平台的推出,傳統的軟體;本文將先介紹rbac的基本思想,在此基礎上,給出;圖1rbac的基本思想;在rbac中,許可permissions(特權);rbac對訪問許可權的授權由系統管理員統一管理,系;由於rbac實現了使用者與訪問許可權的邏輯分離,因此;三、使用者許可權選單樹;用treeview控制項動

角色訪問動態生成使用者許可權選單樹

一、引言

隨著.net和j2ee開發平台的推出,傳統的軟體開發模式開始向b/s模式轉變,這種轉變給系統的安全性提出了更高的要求,b/s模式下,由於http協議和瀏覽器的特殊性,可能會造成資訊的洩漏甚至使非法使用者修改資料。而許可權的設定、分配與管理是任何乙個系統必不可少的功能。如何設計與實現其功能,目前有多種方案,傳統的訪問控制方法dac(discretionary access control,自主訪問控制模型)、mac(mandatory access control,強制訪問控制模型)難以滿足複雜的企業環境需求。本文採用了現在流行的基於角色訪問控制(rbac,role based access control)的基本思想,巧妙地利用了web控制項treeview及asp.net技術,設計了在b/s模式下,根據不同的使用者,不同的角色許可權,動態生成使用者選單樹的一種具體實現方法。

本文將先介紹rbac的基本思想,在此基礎上,給出在asp.net中的具體實現方法。 二、角色訪問控制(rbac)的基本思想

圖1 rbac的基本思想

在rbac中,許可permissions(特權)就是允許對乙個或多個客體執行的權力,角色就是許可的集合,如圖1所示。rbac的基本思想就是把整個訪問過程分為兩步:訪問許可權與角色關聯,角色再與使用者關聯,從而實現了使用者與訪問許可權的邏輯分離。

rbac對訪問許可權的授權由系統管理員統一管理,系統管理員根據單位中不同的崗位定義不同的角色,使用者根據其職能和責任被賦予相應的角色。一旦使用者成為某角色的成員,則此使用者可以完成該角色所具有的職能。

由於rbac實現了使用者與訪問許可權的邏輯分離,因此它極大地方便了許可權管理的複雜性。可根據使用者的實際工作崗位將使用者與角色關聯,一方面定義角色、增加刪除角色中的使用者易於操作,另一方面,可以通過更改角色的許可權實現大批量使用者許可權的更新。在實際應用中,由於角色/許可權之間的變化比使用者/角色之間的變化要慢得多,當乙個使用者的職位發生了變化,只要將使用者當前的角色去掉,加入代表新職務的角色即可。因此,rbac的優點是明顯的,更符合企業的應用特徵。

三、使用者許可權選單樹

用treeview控制項動態實現使用者許可權選單樹的基本思想是:根據角色訪問控制(rbac)的基本原理,給使用者分配不同的角色,每個角色對應一些許可權,然後根據使用者id獲取使用者對應的角色集合,由角色集合獲取對應的許可權集合,再由許可權集合利用treewiew控制項動態生成一棵由該使用者對應的角色能訪問的頁面(模組)組成的許可權樹。這樣,使用者無權訪問的頁面在許可權選單樹就不會出現,不同的使用者進入的介面不同,實現了使用者許可權的統一管理。

下面從功能模組設計、資料庫設計、架構設計等幾方面來闡述其實現過程。 1.功能模組劃分

使用者許可權管理系統功能如圖2所示,其中主要模組功能闡述如下:

使用者管理模組分為:刪除使用者、瀏覽使用者和角色分配三個子模組,主要負責各類使用者的刪除、合法性驗證及為使用者分配角色。使用者管理模組中並沒有增加使用者子模組的功能,主要是由使用者註冊模組來實現的。

許可權管理模組分為:角色管理和訪問控制兩個子模組。角色管理負責管理各類角色(增、刪、改),為角色授予相應資訊服務模組的使用許可權,刪除角色的某個模組的使用許可權等;訪問控制是保證資訊保安

的關鍵,使用者登入時經身份驗證後,系統根據使用者具有角色的資訊服務模組的使用許可權自動生成訪問許可權集,使得使用者能夠訪問授權的資訊,攔截對沒有授權資訊服務的訪問。

圖2 使用者許可權管理功能模組圖

2.資料庫設計

在實施rbac生成使用者許可權選單樹時,為了提高系統管理及資料訪問的效率,在資料庫中設計了使用者表(表1所示)、角色表(表2所示)、使用者角色表(表3所示)、角色許可權表(表4所示)及選單樹結構表(表5所示)共5個表。

表1 使用者資訊表users

表2 角色資訊表roles

表3 使用者角色表userroles

表4 角色許可權表rolepermissions

表5 選單樹結構表tree

web程式中,將系統功能模組組織成樹型結構,每個模組對應乙個選單,選單之間的父子關係直接反映了模組之間的父子關係,在資料庫中用一張表tree來儲存這種結構。5個表的關係如圖3所示。

圖3 5個表之間的關係圖

3.系統架構設計

b/s模式下,採用三層結構:表示層、邏輯層及資料層。為了程式設計方便,把資料層分為實體層和資料訪問層,把開啟、關閉資料庫及呼叫儲存過程的**全部封將在資料訪問類sqlhelper.cs中。實際應用中採用的是四層結構,系統架構設計如圖4所示。

為了提高程式的執行效率,所有的資料操作都是通過類sqlhelper.cs呼叫儲存過程來實現的。 實體層的幾個主要類及關鍵方法如下: (1)使用者類user:

getuserlogin(stringsusername,string spassword):使用者登入驗證。 getrolebyuser(int nuserid):由使用者id返回該使用者所有的角色集。 adduserrole(int nuserid,int nroleid):為使用者分配角色。 getuserpermissionlist( int userid ):得到使用者的所有許可權集。 (2)角色類roleentity:

addrolemodule(intntreeid,int nroleid):為角色分配許可權。 deleterolemodule(int nroleid):刪除角色擁有的許可權。

getmodulebyrole(intnroleid):由角色id得到該角色的許可權集。

圖4 使用者許可權管理架構圖

注:圖4中的箭頭為呼叫關係。

(3)許可權樹類tree:

bindtree(treeviewtreeview,int userid):生成樹目錄。

createchildnode(treenodeparentnode,datatable datatable):遞迴函式生成樹結點。 gettreesbyuserid(int nuserid):由使用者id得到使用者許可權集動態生成使用者許可權樹。(4)使用者許可權檢查類ckeckauthority:

chkpermission(int userid ):檢查使用者是否有訪問許可權。 isinrole(int roleid):檢查角色是否存在。 4.具體實現

在樹型結構中,給角色授權時採取簡單方式,每次授權時,將其對應的roleid、treeid及parentid存入rolepermissions表中,見圖5。

圖5 角色授權

將ie web控制項treeview新增到web頁分以下兩步:(1)在頁面頂端新增以下@register指令:

<%@registertagprefix=」iewc」

namespace=」 microsoft.web.ui.webcontrols」 assembly=」 microsoft.web.ui.webcontrols」 %>

(2)在web頁中需顯示treeview的位置新增以下web控制項語法:

…關於treeview控制項的用法,讀者可參看相應的書籍。

總體架構頁面包括使用者登入(longin.aspx)和主介面(default.aspx)兩個部分。

主介面分為三個部分:上部分為標題條(head.aspx),左部分為選單目錄樹(lefttree.aspx),右部分主框架(mainfram.aspx)。其中lefttree.aspx頁面含treeview控制項,使用者單擊樹中的選單結點就可開啟相應的操作頁面。

使用者登入採用窗體式驗證,負責提供使用者的身份驗證。然後根據使用者在系統中所扮演的角色,取出該使用者對應的許可權集,動態生成該使用者對應本系統的操作許可權樹(見圖6)。

圖6 使用者訪問許可權示意圖

登入體login.aspx中的主要**如下:

privatevoid loginbtn_click(object sender, system.eventargs e)

recs.close();

if(isvalid=="0")//使用者沒有被系統管理同確定,轉向訪問拒絕面 if((userid != null)&& (userid != "")) else {

//使用者有訪問許可權,建立使用者名稱,密碼驗證的票據

formsauthenticationticketticket =new formsauthenticationticket(

1, //version 版本

username.text.trim(),// 使用者cookie名

原:

使用者 角色 許可權

最近因為要用到許可權這個東西,感覺腦袋很是有點亂,昨天硬是搞到大半夜才終於理清了思路。現在我就將我的思路和大家分享一下,不敢保證完全正確,大家看看便罷。看看便罷 一般我們使用到 使用者 角色 許可權 這三張表的時候,會發現表裡會有很多字段,然後相對應的外來鍵也是很多,往往我們就容易混亂。現在我這邊列...

使用者角色許可權

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...

使用者角色許可權

1 使用者表 sys user idorg id login name password user name phone email create time login time 主鍵id 組織id 使用者登陸名 使用者密碼 使用者姓名 手機號電子郵箱 建立時間 登陸時間 2 角色表 sys rol...