1、什麼是shiro
(1)屬性:java框架
(2)用途:身份驗證、用戶受權、加密、會話管理
(3)優勢:輕量、易用
2、三大組件
(1)
subject:表明當前主體,與當前應用交互的任何東西都是subject;
(2)
SecurityManager :安全管理器,全部有關安全的操做均與此有關。是shiro核心,負責與其餘組件交互。
(3)
Realms:域。
Shiro 從 Realm 獲取安全數據(如用戶、角色、權限),就是說 SecurityManager 要驗證用戶身份,那麼它須要從 Realm 獲取相應的用戶進行比較以肯定用戶身份是否合法,也須要從 Realm 獲得用戶相應的角色/權限進行驗證用戶是否能進行操做。
舉個例子:
小明,小紅、小強和小剛買火車票回家,此時整個火車站(包括售票機,工做人員,火車)都屬於subject,與用戶進行交互。
進入火車站時須要檢票,
檢票人員須要覈對票的有效性,發現小剛的票是假的,就拒絕他進入。
核票時,須要從數據庫獲取信息,此時數據庫就是
域
,用於提供用戶信息。
進入候車廳後,小強忽然大發雷霆,隨意傷人,被巡邏的安保人員扣下。此時安保人員充當
SecurityManager
,用來控制操做安全。
3、其餘組件
Authenticator:認證器,用於用戶身份確認。至關於檢票人員。
Authorizer:受權器,用於判斷用戶是否有權限操做。好比,小紅是一等座,小明是無座,小明如果強行佔座,就會被抓起來。
Session Manager:會話管理,即用戶登陸後就是一次會話,在沒有退出以前,它的全部信息都在會話中;小明到站後,再想上火車,就必須再買票檢票。
Cryptography:加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是明文存儲;火車票上的信息都會進行加密處理,防止壞人獲取。
CacheManager:緩存管理,將用戶權限數據存儲在緩存,這樣能夠提升性能。列車員會進行用戶登記,登記過一次後就再也不查票了。
Cryptography即密碼管理,shiro提供了一套加密/解密的組件,方便開發。好比提供經常使用的散列、加/解密等功能。好比火車票上的二維碼,掃碼時能夠獲取當前車次信息。