Shiro 權限校驗(一)

前言

最近因爲工作需要,集中精力在研究第三方shiro鑑權框架的使用技巧,既然說到了shiro是用來做權限校驗功能的,那麼shiro的核心在哪呢,它由哪幾塊組成的,每一塊的作用是什麼?它與其它鑑權框架相比有什麼優勢? 帶着這些問題,我便對shiro展開了猛烈攻擊。

 

shiro簡介

Apache Shiro 是Java的一個安全框架,因爲對比Spring Sercurity 相對簡單,所以使用的人也是越來越多。shiro可以幫助我們完成:認證、授權、加密、會話管理、與web集成、緩存等一條龍服務。並且它的API也是很簡單的。話不多說先上官圖:

1.Authentication:做身份認證/登錄,驗證用戶是否有登錄身份。

2.Authorization:與前一個英文拼寫比較相似,大家不要搞混淆了,這個是用來做權限驗證。驗證用戶是否有某個功能權限。是否有資格去操作某個功能。

3.Session Management : 會話管理用戶在登錄完成以後就會形成一次會話,在沒有退出系統(或瀏覽器)之前,他的所有信息都存在會話當中

4.Cryptography:加密功能,用來保護數據的安全性,像MD5,RSA這些加密算法都是用來保護密碼的安全。

5.Web Support:web支持,可以集成到web環境。

6.Caching:緩存,在賬戶登錄以後,其用戶信息、對應角色、權限資源不必每次到數據庫中查詢,提高效率。

7.Concurrency:shiro支持多線程應用的併發驗證,例如在開啓一個線程的時候同時開啓另外一個線程,能把權限自動傳播過去。

8.Testing:提供測試支持。

9.Run As: 允許一個用戶裝扮成另一個用戶的身份進去訪問(在授權之後)。

10.Remember Me: 記住賬號,這是很常見的一個功能,在登錄一次後,自動保存賬號信息。

 

一個完整的shiro工作流程 大致是 :  Application Code   (請求進來)---->  把當前的用戶存放到Subject 對象當中 ---->Shiro SecurityManager (管理所有的subject對象)   ----> Realm(驗證登錄用戶,一般與數據庫交互做驗證,可以自定義實現realm對象)  

1.Subject:是shiro的核心之一,代表當前登錄用戶,這個用戶的身份可以是任何與系統交互的主體,如爬蟲、機器人等等,是一個抽象主體。

2.SecurityManager:安全管理器所有的Subject都會綁定到這裏,所有操作都會與SecurityManager進行交互,管理着Subject,有點類似與springmvc中的DispatcherServlet 前端控制器。

3.Relam: shiro從Realm那裏(與數據庫交互)獲取安全數據,如用戶,角色,權限資源,SecurityManager 要驗證用戶身份,需要從Realm獲取用戶進行對比身份是否合法,可以把Realm看做是DataSource.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章