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