Shiro 關於
Apache Shiro 是一個強大易用的 Java 安全框架,提供了認證、授權、加密和會話管理等功能,對於任何一個應用程序,Shiro 都可以提供全面的安全管理服務。並且相對於 Spring Security安全框架,Shiro 要簡單的多。
shiro可以幹什麼
Shiro 可以幫助我們完成:認證、授權、加密、會話管理、與 Web 集成、緩存等
shiro功能
-
Authentication:身份認證/登陸 ,驗證用戶擁有應有的身份,
-
Authorization:授權,權限授權,即用戶擁有的角色,或者是說他擁有哪些授權- -
-
Session Managemengt :會話管理,即用戶登錄後就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通 JavaSE 環境的,也可以是如 Web 環境的;
-
Cryptography:加密,保護數據的安全性(MD5/),如密碼加密存儲到數據庫,而不是明文存儲;
-
Web Support:Web 支持,可以非常容易的集成到 Web 環境;
-
Caching:緩存,比如用戶登錄後,其用戶信息、擁有的角色 / 權限不必每次去查,這樣可以提高效率;
-
Concurrency:shiro 支持多線程應用的併發驗證,即如在一個線程中開啓另一個線程,能把權限自動傳播過去;
-
Testing:提供測試支持;
-
Run As:允許一個用戶假裝爲另一個用戶(如果他們允許)的身份進行訪問;
-
Remember Me:記住我,這個是非常常見的功能,即一次登錄後,下次再來的話不用登錄了。
記住一點,Shiro 不會去維護用戶、維護權限;這些需要我們自己去設計 / 提供;然後通過相應的接口注入給 Shiro 即可。
- Subject是外部應用與subject進行交互,subject記錄用戶當前的,與當前應用交互的任何東西都是 Subject,咱們可以把它當做一個瀏覽器請求的用戶,也可以是一個應用程序,subject在shrio中是一個接口,接口定義了很多的方法外部程序通過subject進行認證,而subject江所有的交互都交給Security manager(安全管理器)
- SecurityManager 安全管理 ,即所有與安全有關的操作都會與安全管理器交互,並且管理所有的subject,他是shrio的核心
- realm 域 shiro從Realm獲取安全數據(用戶 角色 權限) 就是說SecurityManager要驗證用戶省份,那他就需要從域獲取。來確認用戶身份是否合法,也需要realm得到用戶相應的權限/角色進行驗證用戶能否進行操作
簡繁來說 : 1應用代碼通過Sbuject 來進行認證和授權,而Subject又委託給了
SecurityManger
2 我們需要shiro的SecurityManager注入Realm,從而讓SecurityMAnger 能
得到合法的用戶及權限進行判斷