




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一種基于Struts框架的RBAC實現摘要本文通過對訪問控制理論的研究以及對其實現技術的分析,提出了一種基于Struts框架的RBA實現方案。該方案在權限審查時具有相對較少的數據庫訪問次數,并且實現了權限審查的集中管理,降低了系統(tǒng)訪問控制的復雜度,進步了系統(tǒng)的可維護性。關鍵字RBA;Struts;Atin;訪問控制基于角色訪問控制(rle-basedaessntrl,RBA)是目前較為成熟的平安訪問控制模型,它靈敏地解決了權限管理、資源管理及權限審查問題,非常合適基于eb的信息系統(tǒng)。RBA模型從理論上根本解決了系統(tǒng)用戶訪問控制的問題,但從技術實現的角度來看,不同的RBA實現,對系統(tǒng)的開發(fā)及運行
2、效率將有不同影響。本文結合Struts框架良好的V設計形式和RBA靈敏的權限管理的特點,提出一個基于Struts框架的RBA的實現方案。方案較好地實現了RBA模型,并實現了業(yè)務層與邏輯層的別離,具有較好的應用效果。RBA模型引入了“角色的概念。所謂“角色就是一個或一群用戶在系統(tǒng)中可執(zhí)行的操作的集合,它是一個用戶的集合,又是一個受權答應的集合。通過將角色指派給用戶,為角色賦予權限的方式,使用戶和權限通過角色間接相聯絡。RBA根本模型如圖1所示。圖1RBA根本模型在RBA中,用戶與角色之間、角色與權限之間都是多對多的關系。會話是一個用戶對多個角色的映射,此時的用戶權限可以為激活角色權限的并集。RB
3、A對資源受權管理過程分為兩個局部,首先實現訪問權限與角色相關聯,然后再實現角色與用戶相關聯,從而實現了用戶與訪問權限的邏輯別離。傳統(tǒng)的以JSP頁面為核心的開發(fā)形式由于表示邏輯和業(yè)務邏輯的強耦合,不利于應用擴展和更新,已不能滿足應用規(guī)模的進一步擴大的需求。V設計形式將應用程序分為三個核心局部:模型、視圖、控制器,它們各自處理各自的事務,很好地實現表示邏輯和業(yè)務邏輯的有機別離。Struts是V設計形式的一種實現框架,包含了豐富的標記庫和獨立于該框架工作的實用程序類,近年來被越來越多地運用于很多大型系統(tǒng)的實現,成為eb應用開發(fā)中最為流行的框架之一。簡單的Struts體系構造如圖2所示。客戶端通過閱讀
4、器發(fā)出懇求后,懇求被AtinServlet獲得,AtinServlet在Struts-nfig.xl配置文件中查找有效映射,然后將相應的Atinapping對象轉發(fā)給Atin處理器對象進展處理。Atin處理器對象訪問AtinFr中的數據,處理和響應客戶的懇求,它還調用后臺的Bean組件,這些組件封裝了詳細的業(yè)務邏輯。Atin處理器對象根據處理結果通知控制器,控制器進展下一步的處理。圖2Struts體系構造在基于Struts的信息系統(tǒng)中,“權限表達為是否擁有對某功能模塊的訪問資格。當用戶需要完成某種功能時,通常都是以發(fā)出類似*.d形式的URL來懇求。所以,驗證的任務就是驗證用戶是否擁有權限訪問U
5、RL所指的功能模塊。在以往的基于Struts框架的RBA實現中,根本思想都和上述一致,但就各自的實現方式而言,又各有優(yōu)缺點。比方,有的實現方式是在每個Atin中添加權限驗證,這種方式實現簡單,但由于權限審查過于分散,導致系統(tǒng)可維護性以及可移植性較差;有的是將URL資源及對應權限關系保存在數據庫中,根據用戶的角色權限信息進展比對來施行權限審查,這種實現方法靈敏,易維護,但每次進展權限審查時必然增加了數據庫的訪問次數,而且,有時可能多個懇求(如新增、保存、刪除等)通過同一個Atin轉發(fā),使用這種方式就需要慎重考慮URL粒度是否太粗的問題。通過比照分析,筆者提出一種新的基于Struts的RBA的實現
6、。根本原理也是驗證用戶URL懇求的合法性,但詳細實現時,考慮了以下幾個方面的設計:RBA中用戶、角色和權限關系的存儲設計。用戶的URL懇求的設計。struts-nfig.xl的設計。權限的驗證算法的設計。4.1數據庫設計RBA中用戶、角色和權限關系應該存儲在數據庫中。在施行驗證時,可以根據發(fā)出懇求的用戶(通常在用戶登錄時由系統(tǒng)保存)查找其角色和權限信息。數據庫中需要以下幾個表:(1)用戶表:A_USERid,Sys_Nae,Passrd,theruserinfatin。(2)角色表:A_RLEid,Rle_Nae,therrleinfatin。(3)權限表:A_PERid,Per_Nae,th
7、erperinfratin。(4)用戶角色表:A_USER_RLEid,User_id,Rle_id。(5)角色權限表:A_RLE_PERid,Rle_id,Per_id。我們不采用將URL資源及對應權限關系存放于數據庫的方式,以減少權限審查時數據庫訪問次數。4.2URL懇求的設計考慮到可能有多種操作懇求通過同一個Atin轉發(fā),我們規(guī)定在URL中添加懇求參數,以說明它所指向的Atin以及操作形式。詳細形式可以這樣:*.d?atinType=PrjetDelete,其中atinType參數的值即說明了操作形式。對于針對一樣Atin的懇求,由于可以使用atinType參數加以區(qū)分,因此這種方式可以
8、解決URL粒度太粗的問題。4.3struts-nfig.xl的設計由于URL資源與權限的映射關系沒有存放于數據庫,而這種映射關系又是權限審查時的重要根據,因此必須解決映射關系的存儲問題。通過分析,我們發(fā)現,之所以需要知道URL與權限的映射關系,本質上是為了反映這樣一個問題:每個Atin都需要知道它的atinType與哪一個權限對應。也就是說,假如我們讓Atin知道了它的atinType所對應的權限也就解決了URL資源與權限的映射關系。為實現上述目的,struts-nfig.xl需要做如下配置:atinparaeter=PrjetNe(prjet_ne);PrjetDelete(prjet_de
9、lete);/atin配置Atin時,對于需要進展權限審查的Atin,可以配置其Paraeter屬性,以“atinType(Per_Nae)形式保存atinType與權限的映射關系,多個atinType與權限的映射可以用分號作為分隔。當懇求指向Atin時,可以獲取并分析Paraeter參數值,用以完成權限審查。4.4權限驗證算法的設計首先,既然系統(tǒng)中大局部的Atin都需要進展形式相似的權限驗證,其中必然存在可復用的設計。結合面向對象的思想,我們可以設計一個基類Atin,不妨取名為BaseAtin,在該Atin中封裝權限審查邏輯,系統(tǒng)中所有需要進展權限審查的Atin,都可以從該類繼承,由此天生具
10、有了權限審查才能。這樣,我們就實現了權限審查邏輯的集中管理,便于系統(tǒng)的維護。BaseAtin類設計如下:publiabstratlassBaseAtinextendsAtinpubliAtinFrardexeute(Atinappingapping,AtinFrfr,HttpServletRequestrequest,HttpServletRespnserespnse)if(hekPer(request,apping)AtinFrardfrard=dExeute(apping,fr,request,respnse);returnfrard;elsereturnapping.findFrard(
11、nper);publiabstratAtinFrarddExeute(Atinappingapping,AtinFrfr,HttpServletRequestrequest,HttpServletRespnserespnse);/要求所有BaseAtin的子類必須實現該方法,供Exute方法調用privateStringgetAtinPer(Atinappingapping)/根據request傳遞的parater值,在配置文件中查找對應權限名稱并返回StringatinType=request.getParaeter(atinType);Stringparaeter=apping.getPa
12、raeter();privatebleanhekPer(HttpServletRequestrequest,Atinappingapping)/權限審查/獲取登錄用戶信息LginUserlginUser=(LginUser)sessin.getAttribute(urrentUser);/獲取此次操作所需的權限StringneedPer=getAtinPer(apping);/驗證登錄用戶是否擁有操作權限if(IsPerInUserRle(needPer,lginUser)returntrue;elsereturnfalse;privatebleanIsPerInUserPer(StringneedPer,LginUserlginUser)/判斷登錄用戶lginUser擁有的權限集合是否包含needPer權限RBA是目前較為成熟的平安訪問控制模型,Struts是目前較為流行基于V的eb系統(tǒng)開發(fā)框架,將兩者結合起來開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江專用2025版高考地理大三輪復習5選擇題專練五
- 四年級語文上冊第七單元26那片綠綠的爬山虎拓展閱讀母親肖復興素材魯教版
- 廣東省廉江市實驗學校高中政治2.2價格變動的影響練一練必修1
- 北京專版2024年中考生物復習主題十降地生活課時訓練28降地生活
- 江蘇專版2024中考道德與法治復習方案第一部分七上第01課時成長的節(jié)拍提分訓練
- 跨文化商務溝通與行政禮儀
- 閱讀開啟智慧之門的關鍵
- 超聲科診斷技術的教育與實踐
- 廣西2025年02月廣西崇左市左江治旱工程管理中心招考2名工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 貓寄養(yǎng)協(xié)議合同范本
- 機房建設驗收報告
- 環(huán)境巖土工程學課件-東南大學-潘華良境巖土工程學概論-9大環(huán)境巖土工程問題
- 公路養(yǎng)護的檔案管理-公路養(yǎng)護檔案的內容及分類
- 武漢大學《819宏微觀經濟學》知識板塊歸納與重點名詞解釋大全
- 脊柱內鏡應用與進展
- 學校食品安全會議記錄內容
- 中國古代文物賞析
- 2022年江蘇省錄用公務員筆試《公安專業(yè)科目》試題(網友回憶版)
- 光伏電站螺旋地樁承載力計算軟件
- 醫(yī)用耗材配送服務方案
- 風力發(fā)電場建設項目初步(概要)設計
評論
0/150
提交評論