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