開源權限管理框架shiro

開源權限管理框架shiro

ID:35336086

大小:82.46 KB

頁數(shù):5頁

時間:2019-03-23

開源權限管理框架shiro_第1頁
開源權限管理框架shiro_第2頁
開源權限管理框架shiro_第3頁
開源權限管理框架shiro_第4頁
開源權限管理框架shiro_第5頁
資源描述:

《開源權限管理框架shiro》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫

1、—、Shiro基本概念:ApacheShiro(日語“堡壘(Castle)”的意思)是一個強大易用的Java安全框架,提供了認證、授權、加密和會話管理功能,可為任何應用提供安全保障-從命令行應用、移動應用到大型網絡及企業(yè)應用。Shiro為解決下列問題(我喜歡稱它們?yōu)閼冒踩乃囊?提供了保護應用的API:認證?用戶身份識別,常被稱為用戶“登錄”;授權?訪問控制;密碼加密-保護或隱藏數(shù)據(jù)防止被偷窺;會話管理-每用戶相關的時間敏感的狀態(tài)。Shiro還支持一些輔助特性,如Web應用安全、單元測試和多線程,它們的存在強化了上面提到的四個要索。Shiro的基本功能如圖:rAuthentica

2、tionAuthorizationSessionManagementCryptography,WebSupportCaching1[concurMncy[TUMng[Bun]PrimaryConcernsSupportingFeatures二、Shiro基本處理流程及一些主要概念SecurltyManager(thecurrent’user)(managesallSubjects)(accessyoursecuritydata)Shiro框架攔截到一個應用請求后,會為此請求建立一個Subject對象,木次Session沒關閉時,Subject對象會一直存在,作為一個虛擬的user對象

3、。對此對象可以進行身份驗證(Authentication)和權限驗證(Authorization),這吐處理將會提交給Shiro的SecurityManager對?象。簡單地理解,SecurityManager是一個總調度,負責接受:不同的Subject対象的權限相關的處理請求。而真正干活的是Realm對象,也就是說最后作身份驗證和權限驗證的是Realm對象。Shiro的Realm對象不提供用戶信息和權限信息,這些信息是Shiro的使用者要提供的,Realm中定義的各種驗證方法和安全數(shù)據(jù)的容器,使用者是把自己的安全數(shù)據(jù)裝進去。重要的事情再說一遍,對subject的各種安全驗證,使用者

4、調用subject對彖的相關屬性和方法,不直接操作Realm對象。三、一些簡單的例子為了幫助大家理解Shiro的運行機制,這里簡單舉例說明。假設我們有一個基于MVC的簡單web應用,假設Shiro框架已經配置好,攔截頁血的任何請求(如何配置后血會簡單介紹)。1、登錄時的身份驗證:(1)MVC中的C(controller)接收頁面發(fā)來的登錄請求,從request中取出頁面送來的username,password□java代碼:Stringusername=request.getParameter("username”);Stringpassword=request.getParamet

5、er("password");(2)構造token對象,裝入username和password,用于驗證。java代碼:UsernamePasswordTokenmytoken二newUsernamePasswordToken(username,password);(3)獲取當前session的subject對象。java代碼:SubjectcurSbj=SecurityUtils.getSubject();(4)背錄驗證。java代碼:curSbj.login(mytoken);若login方法驗證失敗,會拋出異常,所以木方法應寫在一個trycatch結構屮。小結:只需要調用sub

6、ject的方法,不直接訪問realmo2、在執(zhí)行某個功能時判斷當前用戶是否有權限執(zhí)行:SubjectcurSbj=Securitylltils.getSubject();curSbj.isPermitted(n某權限“);小結:只需要調川subject的方法,不直接訪問realmo3、判斷當前用戶是否具冇某個角色:SubjectcurSbj=Securitylltils.getSubject();curSbj.hasRole(“某角色“);小結:只需要調用subject的方法,不直接訪問realmo4、Realm中怎樣裝入使用者口定義的權限數(shù)據(jù)(1)調用curSbj.login(my

7、token)方法的請求最終會被SecurityManager發(fā)送到realm對象,并調川realm對象的doGetAuthenticationlnfo()Z/'法,我們在這個方法屮驗證是否存在傳入的token中的username,并完成password驗證。下1僑具體來看看doGetAuthenticationlnfo()方法的代碼。java代碼:protectedAuthenticationlnfodoGetAuthenticationlnfo(Auth

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。