1. 程式人生 > >shiro框架簡介

shiro框架簡介

這裡是修真院後端小課堂,每篇分享文從

【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】

八個方面深度解析後端知識/技能,本篇分享的是:

【shiro框架簡介】

【修真院java小課堂】shiro框架簡介

大家好,我是IT修真院北京分院第35期的學員鐵木兒,一枚正直純潔善良的程式設計師,今天給大家分享一下,修真院官網java任務拓展

(1)背景介紹:

Apache Shiro

讀作“sheeroh”,即日語“城”或“堡壘”

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼學和會話管理。使用Shiro的易於理解的API,您可以快速、輕鬆地獲得任何應用程式,從最小的移動應用程式到最大的網路和企業應用程式。

(2)知識剖析:

 

 

 

核心元件

Subject,SecurityManager,Realms

框架結構

Subject:主體,可以看到主體可以是任何可以與應用互動的“使用者”;

SecurityManager:相當於SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心臟;所有具體的互動都通過SecurityManager進行控制;它管理著所有Subject、且負責進行認證和授權、及會話、快取的管理。

 

Authenticator:認證器,負責主體認證的,這是一個擴充套件點,如果使用者覺得Shiro預設的不好,可以自定義實現;其需要認證策略(Authentication Strategy),即什麼情況下算使用者認證通過了;Authrizer:授權器,或者訪問控制器,用來決定主體是否有許可權進行相應的操作;即控制著使用者能訪問應用中的哪些功能;

 

 

Realm:可以有1個或多個Realm,可以認為是安全實體資料來源,即用於獲取安全實體的;可以是JDBC實現,也可以是LDAP實現,或者記憶體實現等等;由使用者提供;注意:Shiro不知道你的使用者許可權儲存在哪及以何種格式儲存;所以我們一般在應用中都需要實現自己的Realm;

SessionManager:如果寫過Servlet就應該知道Session的概念,Session呢需要有人去管理它的生命週期,這個元件就是SessionManager;而Shiro並不僅僅可以用在Web環境,也可以用在如普通的JavaSE環境、EJB等環境;所有呢,Shiro就抽象了一個自己的Session來管理主體與應用之間互動的資料;這樣的話,比如我們在Web環境用,剛開始是一臺Web伺服器;接著又上了臺EJB伺服器;這時想把兩臺伺服器的會話資料放到一個地方,這個時候就可以實現自己的分散式會話(如把資料放到Memcached伺服器);

SessionDAO:DAO大家都用過,資料訪問物件,用於會話的CRUD,比如我們想把Session儲存到資料庫,那麼可以實現自己的SessionDAO,通過如JDBC寫到資料庫;比如想把Session放到Memcached中,可以實現自己的Memcached SessionDAO;另外SessionDAO中可以使用Cache進行快取,以提高效能;

CacheManager:快取控制器,來管理如使用者、角色、許可權等的快取的;因為這些資料基本上很少去改變,放到快取中後可以提高訪問的效能

(3)常見問題:

除了shrio外還有哪些安全框架

(4)解決方案:

Spring Security

Shiro比Spring更容易使用,實現和最重要的理解 Spring Security更加知名的唯一原因是因為品牌名稱 “Spring”以簡單而聞名,但諷刺的是很多人發現安裝Spring Security很難 然而,Spring Security卻有更好的社群支援 Apache Shiro在Spring Security處理密碼學方面有一個額外的模組 Spring-security 對spring 結合較好,如果專案用的springmvc ,使用起來很方便。但是如果專案中沒有用到spring,那就不要考慮它了。 Shiro 功能強大、且 簡單、靈活。是Apache 下的專案比較可靠,且不跟任何的框架或者容器繫結,可以獨立執行

(5)編碼實戰:

(6)拓展思考:

(7)參考文獻:

https://mrbird.cc/Spring-Boot-shiro%20Authentication.html

http://jinnianshilongnian.iteye.com/blog/2018936

https://blog.csdn.net/liyuejin/article/details/77838868

(8)更多討論:

Q1:除了shrio外還有哪些安全框架

A1:

Spring Security

Shiro比Spring更容易使用,實現和最重要的理解 Spring Security更加知名的唯一原因是因為品牌名稱 “Spring”以簡單而聞名,但諷刺的是很多人發現安裝Spring Security很難 然而,Spring Security卻有更好的社群支援 Apache Shiro在Spring Security處理密碼學方面有一個額外的模組 Spring-security 對spring 結合較好,如果專案用的springmvc ,使用起來很方便。但是如果專案中沒有用到spring,那就不要考慮它了。 Shiro 功能強大、且 簡單、靈活。是Apache 下的專案比較可靠,且不跟任何的框架或者容器繫結,可以獨立執行

Q2:shiro只支援web環境嗎
A2:shiro支援javaEE和javaSE環境

Q3:Shiro的token是指什麼
A3:在之前的學習中,我們所使用的token是儲存在cookie中的一種使用者憑證。在shiro中,有自己定義的token,用於在shiro內部儲存使用者資料,在這一點上倒是相似的,不過shiro中token的內容是規定好的,我們只需要往裡傳參。

(9)鳴謝:

感謝各位師兄弟觀看

(10)結束語:

今天的分享就到這裡啦,歡迎大家點贊、轉發、留言、拍磚~

 

 

PPT連結 視訊連結

更多內容,可以加入IT交流群565734203與大家一起討論交流

 

這裡是技能樹·IT修真院:http://www.jsnhu.com,初學者轉行到網際網路的聚集地