摘要:為了提高Web信息管理系統(tǒng)的靈活性和可維護(hù)性,根據(jù)該類系統(tǒng)的特點(diǎn),采用基于數(shù)據(jù)庫技術(shù)的權(quán)限動(dòng)態(tài)分配方法,以ASP.NET為開發(fā)工具,對(duì)該方法進(jìn)行了設(shè)計(jì)和實(shí)現(xiàn)。通過在Web信息管理系統(tǒng)開發(fā)過程中的應(yīng)用,該方法可以更好地適應(yīng)由于用戶業(yè)務(wù)權(quán)限的改變所引起操作權(quán)限的變化,實(shí)現(xiàn)對(duì)用戶操作權(quán)限的動(dòng)態(tài)設(shè)置,獲得了廣大用戶的認(rèn)同,具有很高的應(yīng)用價(jià)值。該方法具有一定的通用性,可以很容易擴(kuò)展到其他Web開發(fā)平臺(tái)上。
關(guān)鍵詞:ASP.NET;Web信息管理系統(tǒng);用戶操作權(quán)限;權(quán)限動(dòng)態(tài)分配
中圖分類號(hào):TN91934文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1004373X(2012)18003602
隨著信息化進(jìn)程的不斷深入,人們借助計(jì)算機(jī)實(shí)現(xiàn)日常的管理工作已經(jīng)非常普遍,這也大大促進(jìn)了計(jì)算機(jī)應(yīng)用系統(tǒng)的蓬勃發(fā)展,尤其是Web應(yīng)用程序憑借其方便維護(hù)等特點(diǎn)得到了迅速發(fā)展。其中信息管理系統(tǒng)因其盡可能地延續(xù)人工管理的管理機(jī)制,更方便了用戶的操作和管理而得到大家的一致認(rèn)可。在信息管理系統(tǒng)中,不同類型的用戶對(duì)系統(tǒng)所能進(jìn)行的操作是不同的,所以對(duì)用戶的權(quán)限管理必須做到動(dòng)態(tài)分配或調(diào)整,以可視化的界面提供給系統(tǒng)管理者或者用戶。如何針對(duì)不同的功能模塊和不同的部門及其不同的用戶動(dòng)態(tài)的分配權(quán)限,是管理者最為關(guān)心的,也在很大程度上影響到一個(gè)系統(tǒng)的成敗。在此結(jié)合實(shí)際的軟件開發(fā)與設(shè)計(jì),對(duì)動(dòng)態(tài)分配權(quán)限問題進(jìn)行了一定的探索研究與實(shí)踐,提出了以下基于角色的權(quán)限動(dòng)態(tài)分配方法。
1基于角色的動(dòng)態(tài)權(quán)限分配的設(shè)計(jì)
在信息管理系統(tǒng)中,實(shí)現(xiàn)權(quán)限動(dòng)態(tài)分配的方法有多種。從操作對(duì)象上看,可以分為兩種:以用戶為中心的方法和以角色為中心的方法。以用戶為中心的方法是對(duì)每個(gè)用戶直接設(shè)置權(quán)限,而以角色為中心的方法是給每個(gè)角色授權(quán),這是一種間接設(shè)置權(quán)限的方法。這種以角色為中心的方法,是現(xiàn)在使用最多的一種方法,它的基本做法是將系統(tǒng)中的所有用戶分成多個(gè)不同的類,屬于同一類的用戶具有相同的操作權(quán)限。這樣,在實(shí)現(xiàn)時(shí)就可以針對(duì)類型設(shè)置權(quán)限,這也就是通常所說的基于角色的權(quán)限管理。基于角色的動(dòng)態(tài)權(quán)限分配具有很大的靈活性,主要體現(xiàn)在不用修改應(yīng)用程序就可以實(shí)現(xiàn)操作權(quán)限的調(diào)整,更好的適應(yīng)了由于業(yè)務(wù)的調(diào)整或變化所帶來的操作權(quán)限的變化。在實(shí)際應(yīng)用中,對(duì)信息系統(tǒng)權(quán)限的動(dòng)態(tài)設(shè)置進(jìn)行了有益的探索,在該基礎(chǔ)上用ASP.NET作為工具,以數(shù)據(jù)庫為基礎(chǔ),實(shí)現(xiàn)了基于角色的權(quán)限動(dòng)態(tài)分配功能。由于數(shù)據(jù)庫是實(shí)現(xiàn)的基礎(chǔ),所以這里將重點(diǎn)對(duì)數(shù)據(jù)庫進(jìn)行設(shè)計(jì)。在基于角色的權(quán)限管理中,至少需要?jiǎng)?chuàng)建4張表:用戶表(User)、角色表(Role)、系統(tǒng)資源表(Resource)、權(quán)限表(Right)。其中,用戶表用來保存用戶的基本信息,主要包括用戶編號(hào)(Id)、用戶姓名(Name)、登錄密碼(Password)和所屬角色編號(hào)(Roleid)等;角色表用來保存系統(tǒng)中的所用角色,主要包括角色編號(hào)(Roleid)和角色名稱(Rolename);系統(tǒng)資源表用來保存系統(tǒng)中所有的操作項(xiàng)以及相互之間的層次關(guān)系,主要包括資源編號(hào)(Resourceid)、資源名稱(Name)、資源的URL(Url)和資源所屬上級(jí)資源的編號(hào)(pid);權(quán)限表用來保存每種角色和系統(tǒng)資源之間的對(duì)應(yīng)關(guān)系。這4張表之間的關(guān)系如圖1所示。
(1)根據(jù)用戶的編號(hào),從用戶表中獲取用戶所屬角色;
(2)再根據(jù)角色編號(hào)從權(quán)限表中獲取可以操作的所有資源;
(3)對(duì)上一步中的每個(gè)資源,根據(jù)其編號(hào)從資源表中獲取資源的詳細(xì)信息,并根據(jù)資源之間的關(guān)系動(dòng)態(tài)生成操作菜單。
2基于角色的動(dòng)態(tài)權(quán)限分配的實(shí)現(xiàn)
為了提高代碼的可維護(hù)性,對(duì)其實(shí)現(xiàn)使用經(jīng)典的3層結(jié)構(gòu),即表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問。表示層主要完成用戶與系統(tǒng)的交互,如用戶信息維護(hù)頁面、角色信息維護(hù)頁面等。業(yè)務(wù)邏輯層主要完成處理業(yè)務(wù)邏輯,如動(dòng)態(tài)導(dǎo)航條的生成等。數(shù)據(jù)訪問層主要實(shí)現(xiàn)與數(shù)據(jù)庫建立連接及對(duì)數(shù)據(jù)庫的各種操作(即增加、刪除、修改和查詢)。在ASP.NET中,表示層主要通過WebForm實(shí)現(xiàn);數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層主要通過類實(shí)現(xiàn)。下面重點(diǎn)對(duì)數(shù)據(jù)訪問層進(jìn)行實(shí)現(xiàn)。數(shù)據(jù)訪問層主要為業(yè)務(wù)邏輯層提供數(shù)據(jù)服務(wù),所以數(shù)據(jù)訪問類至少應(yīng)該具有打開/關(guān)閉數(shù)據(jù)庫連接、執(zhí)行查詢和修改數(shù)據(jù)的方法。其部分實(shí)現(xiàn)代碼如下: