一.Shior 簡介

簡介

  • Shiro 是java 的一個安全權(quán)限框架。
  • Shiro 可以非常容易的開發(fā)出足夠好的應(yīng)用,其不僅可以用在JavaSE環(huán)境上,也可以用在JavaEE環(huán)境
  • Shiro 可以完成 :認證、授權(quán)、加密、會話管理、與Web集成、緩存等。

功能簡介

  • Authentication :
    身份認證/登陸,驗證用戶是不是有相應(yīng)的身份;
  • Authorization :
    授權(quán),及權(quán)限驗證,驗證某個已認證的用戶是否擁有某個權(quán)限;及判斷用戶是否能進行什么操作,如:驗證某個用戶是否擁有某個角色?;蛘呒毩6鹊尿炞C某個用戶對某個資源是否具有某個權(quán)限;
  • Session Manager :
    會話管理,即用戶登錄后就是一次會話,在沒有退出之前,他的所有信息都在會話中;會話可以是普通JavaSE環(huán)境,也可以是Web環(huán)境的;
  • Cryptography :
    加密,保護數(shù)據(jù)的安全性,如密碼加密儲存到數(shù)據(jù)庫,而不是明文儲存;
  • Caching :
    緩存,比如用戶登錄后,其用戶信息、擁有的角色/權(quán)限不必每次去查詢,這樣可以提高效率;
  • Concurrency :
    Shiro 支持多線程應(yīng)用的并發(fā)驗證,即如在一個線程中開啟另一個線程,能把權(quán)限自動傳播過去;
  • Testing :
    提供一個測試支持;
  • Run As :
    **允許一個用戶假裝為另一個用戶(如果他們允許)的身份進行訪問
  • Remember Me :
    記住我,這個是一個非常常見的功能,即一次登錄后,下次再來的話不用登錄了

從外部來看Shiro

  • 從外部來看Shiro,即從應(yīng)用程序角度來觀察如何使用Shiro完成工作


  • Subject :
    應(yīng)用代碼直接交互的對象是Subject,也就是說Shiro的對外API核心就是Subject。Subject代表了當前“用戶”,這個用戶不一定是一個具體的人,與當前應(yīng)用交互的任何東西都是Subject,如網(wǎng)絡(luò)爬蟲,機器人等;與Subject的所有交互都委托給SecurityManager;Subject其實是一個門面,SecurityManager才是實際的執(zhí)行者
  • SecurityManager :
    安全管理器;即所有與安全有關(guān)的操作都會與SecurityManager交互;且其管理著所有的Subject;可以看出它是Shiro的核心,它負責(zé)Shiro的其他組件進行交互,他相當于SpringMVC中DispatcherServlet的角色;
  • Realm :
    Shiro從Realm獲取安全數(shù)據(jù)(如用戶、角色、權(quán)限),就是說SecurityManager要驗證用戶身份,那么它需要從Realm獲取相應(yīng)的用戶進行比較以確定用戶身份是否合法;也要從Realm獲取相應(yīng)的角色/權(quán)限進行驗證用戶是否能進行操作;可以吧Real看成DataSource

Shiro 內(nèi)部來看

  • Subject:
    任何可以與應(yīng)用交互的“用戶”;
  • SecurityManager:
    相當于SpringMVC中的DispatcherServlet;是Shiro的心臟;所有具體的交互都通過SecurityManager進行控制;它管理著所有Subject、且負責(zé)進行認證、授權(quán)、會話及緩存的管理。
  • Authenticator:
    負責(zé)Subject 認證,是一個擴展點,可以自定義實現(xiàn);可以使用認證策略(Authentication Strategy),即什么情況下算用戶認證通過了;
  • Authorizer:
    授權(quán)器、即訪問控制器,用來決定主體是否有權(quán)限進行相應(yīng)的操作;即控制著用戶能訪問應(yīng)用中的哪些功能;
  • Realm:
    可以有1 個或多個Realm,可以認為是安全實體數(shù)據(jù)源,即用于獲取安全實體的;可以是JDBC 實現(xiàn),也可以是內(nèi)存實現(xiàn)等等;由用戶提供;所以一般在應(yīng)用中都需要實現(xiàn)自己的Realm;
  • SessionManager:
    管理Session 生命周期的組件;而Shiro并不僅僅可以用在Web 環(huán)境,也可以用在如普通的JavaSE環(huán)境
  • CacheManager:
    緩存控制器,來管理如用戶、角色、權(quán)限等的緩存的;因為這些數(shù)據(jù)基本上很少改變,放到緩存中后可以提高訪問的性能
  • Cryptography:
    密碼模塊,Shiro提高了一些常見的加密組件用于如密碼加密/解密。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容