敖 謙,劉 華
(上饒師范學(xué)院,江西 上饒 334001)
在科研管理系統(tǒng)中,涉及多種角色,例如:管理員、教師和科研處管理人員等。系統(tǒng)根據(jù)不同的角色自動生成各自的菜單,在每個頁面中添加角色訪問權(quán)限的代碼,判斷訪問的用戶是否能訪問該頁面。隨著系統(tǒng)的應(yīng)用不斷深入,應(yīng)用模塊不斷增加,角色也更加復(fù)雜,如果沿用之前在每個頁面添加頁面訪問的代碼,造成很多重復(fù)工作。因此需要找到一種靈活的權(quán)限控制方法,本文提出的用戶菜單結(jié)合頁面訪問控制方法能很好的解決這個問題。
站點地圖在ASP.NET中是一個Web.SiteMap的XML文件,位于Web站點的根目錄下,對應(yīng)系統(tǒng)中的所有導(dǎo)航菜單。導(dǎo)航菜單的每個菜單信息保存在一個節(jié)點中,節(jié)點信息包含有菜單對應(yīng)頁面的URL、菜單標(biāo)題和菜單描述。
站點地圖文件中,根節(jié)點名稱SiteMap,包含有很多SiteMapNode標(biāo)記的子節(jié)點,子節(jié)點允許嵌套,子節(jié)點的格式為:
<SiteMapNode(URL)(Title)(Description)></SiteMapNode>
ASP.Net處理Http Request時,使用 Pipeline(管道)方式,由各個HttpModule對請求進行處理,然后到達HttpHandler,HttpHandler處理完之后,仍經(jīng)過Pipeline中各個HttpModule的處理,最后將HTML發(fā)送到客戶端瀏覽器中,如圖1所示。
從圖1中可以發(fā)現(xiàn),所有的HTTP請求都必須經(jīng)過HttpModule模塊,所以可以利用HttpModule模塊對HTTP請求進行權(quán)限控制,放行有權(quán)限的用戶請求,終止沒有權(quán)限的用戶請求,從而實現(xiàn)過濾器的作用。
圖1 ASP.NET處理HTTP請求內(nèi)部流程
科研管理系統(tǒng)的權(quán)限管理分為:生成用戶菜單、頁面訪問控制。
用戶登錄系統(tǒng)后,系統(tǒng)根據(jù)站點地圖Web.sitemap文件,讀取用戶所屬角色與菜單項對應(yīng)表,最終生成用戶的菜單,如圖2所示。
圖2 用戶菜單生成處理
當(dāng)用戶訪問系統(tǒng)的某個頁面時,根據(jù)系統(tǒng)自定義的HttpModule模塊,對用戶的HTTP請求進行權(quán)限的驗證。用戶有權(quán)限正常訪問頁面,否則重定向錯誤頁面,如圖3所示。
圖3 頁面訪問控制處理
用戶信息表
Yhid int用戶賬號 nvarchar(20)用戶密碼nvarchar(20)用戶類型 nvarchar(50)…………
角色與菜單項對應(yīng)表
類型編號 nvarchar(50)用戶類型 nvarchar(50)管理類型 nvarchar(50)教師身份模塊 int課題信息登記 int課題信息修改 int…………
角色與頁面對應(yīng)表
用戶類型 nchar(10)頁面nvarchar(50)
用戶登錄成功后,讀取角色與菜單項對應(yīng)表,結(jié)合Web.sitemap站點地圖文件,利用樹型控件加載Create-Node函數(shù)生成的treenode結(jié)構(gòu)數(shù)據(jù)。Web.sitemap文件內(nèi)容:
CreateNode函數(shù)代碼:
自定義HttpModule模塊代碼:
系統(tǒng)會將所獲取的HTTP請求提交自定義HttpModule模塊,HttpModule模塊根據(jù)Session[“usertype”]得到提交請求的用戶角色類型,并通過委托事件application AcquireRequestState ,將用戶角色類型與從數(shù)據(jù)庫中得到的角色可訪問的資源比較。若hasright函數(shù)返回False,則角色沒有訪問訪問權(quán)限;反之,有訪問權(quán)限。
通過生成用戶菜單結(jié)合頁面訪問控制的方法,實現(xiàn)系統(tǒng)權(quán)限管理與頁面功能模塊松耦合,在實際的運行過程中得到很好的體現(xiàn)。
[1]王明,陸正球.基于MVC科研管理系統(tǒng)的研究與實現(xiàn)[J].微計算機應(yīng)用,2009,(1):77-80.
[2]范明虎,樊紅,伍孝金.ASP.net中基于RBAC的通用權(quán)限管理系統(tǒng)[J].計算機工程,2010,36(1):143-145.
[3]陳偉.ASP.NET 3.5網(wǎng)站開發(fā)實例教程[M].北京:清華大學(xué)出版社,2009.
[4]張文濤,常紅星.基于ASP.NET的B/S架構(gòu)下的項目管理系統(tǒng)的網(wǎng)絡(luò)安全模式設(shè)計[J].計算機科學(xué),2008,35(2):101-103.