簡單介紹
對于Shiro來說不僅可以使用到JavaSE的開發(fā)中,還可以使用到JavaEE的開發(fā)中,Shiro可以完成的工作有。認證、授權、加密、會話管理、與Web的集成、緩存等等操作,shiro 應用實例 www.1b23.com,在SpringBoot使用前端框架的時候就整合了Shiro并且與Thymeleaf整合的也是非常好。
下面就是關于Shiro簡單的功能架構圖

Authentication 身份認證/登錄,驗證用戶是不是擁有相應的身份。
Authorization 授權,權限驗證,驗證某個已經認證的用戶是否有某個權限,也就是判斷用戶是否能做什么樣的事情。例如驗證用戶是否是某個角色
Session Manager 會話管理,也就是用戶登錄后就是一次會話,在沒有退出之前,它的所有信息都在會話中,會話可以是普通的JavaSE會話,也可以是Web會話。
Cryptography 加密,保護數據的安全性,例如密碼加密存儲到數據庫,而不是通過明文存儲
Web Support Web支持,可以很容易的集成到Web環(huán)境中。
Caching 緩存,例如用戶登錄之后,其用戶信息、用戶角色權限等都不需要每次都進行查詢。這樣可以提高效率
Concurrency Shiro 支持多線程應用并發(fā)驗證,即在一個線程中開啟另一個線程能把權限自動傳播過去;
Testing 提供測試支持
Run As 允許一個用戶偽裝成為另一個用戶進行訪問
Remember Me 記住我。下次登錄的時候不用登錄
注意
Shiro 不會維護用戶、維護權限;這些都是需要通過用戶設計來實現,然后通過對應的方式注入到Shiro中即可。
Shiro工作流

從上圖可以看出來,與應用程序代碼直接交互的是Subject對象,也就是說Shiro對外的API核心的內容就是Subject,下面就來介紹一下整個交互過程中的各個API含義
Subject:主體,代表當前用戶,這里的用戶并不是指具體的人,與當前應用交互的任何的東西都是Subject,例如客戶端等等,也就是說這個是一個抽象的概念,所有的Subject都綁定到一個SecurityManager,與Subject的所有交互都要委托到SecurityManager;可以把Subject看做是一個代理,真正的執(zhí)行者是SecurityManager。
SecurityManager:安全管理器;也就是是所有跟安全相關的操作都會與SecurityManager進行交互。并且他還管理所有的Subject,可以看出它才是真正的Shiro的核心,負責與后面要介紹的其他組件進行交互。也就是類似于SpringMVC中的DispacherSevlet前端控制器
Realm 域,Shiro從Realm獲取安全數據例如用戶、角色、權限等等,也就是說Security Manager要驗證用戶身份,那么他需要從Realm獲取相應的用戶進行比較確定用戶身份是否合法。也需要從Realm中得到用戶相應的角色權限驗證用戶是否能進行操作;可以把Realm看成是一個DataSource,也就是一個類似于安全數據源。
也就是說,Shiro不提供用戶權限,但是通過Realm進行維護
Shiro內部架構

從圖中可以看到所有的應用于Shiro交互都是通過Subject來實現的。
Subject:主體,任何應用交互的抽象用戶
SecurityManager:類似于SpringMVC中的DispatchServlet,是Shiro中的核心內容,所有的操作都是通過SecurityManager進行的控制,管理這所有的Subject、并且負責認證授權會話管理等等。
Authenticator:認證器,負責主體的認證,這個是擴展點,如果開發(fā)者覺得Shiro默認的不好用,也可以自己實現自己的認證策略,也就是在什么樣的情況下才算是用戶認證通過。
Authrizer:授權器,或者是訪問控制器,用來決定主體是否有權限進行相應的操作;也就是控制用戶能訪問應用中的哪些功能。
Realm:可以有一個也可以有多個,安全實體數據源,也就是通過這個獲取到一個安全的實體。可以使用JDBC實現,可以是LDAP實現,或者是通過內存實現等等,是由開發(fā)者提供。但是需要注意的一點是Shiro并不知道用戶權限是以哪種格式進行存儲的。所以在開發(fā)中通常是使用自己的自定義的來進行控制。
SessionManager:在Servlet中,Session是一個重要的概念,而Shiro中對于Session的管理就是通過SessionManager進行管理,Shiro不僅僅可以用在Web環(huán)境中,也可以使用到非Web環(huán)境的JavaSE中,所以,Shiro抽象了一個Session來管理主體與應用之間的數據交互,這樣的話,例如在一個Web環(huán)境中使用了是Web服務器但是在其他客戶端中使用的就不是Web服務器,這就導致一個問題Session放到哪里,這里推薦使用的是Memcached也就是進行緩存操作。利用分布式操作將Session存到一個統(tǒng)一的地方,所有的服務器都從同一個地方獲取Session的數據。
Session DAO:對于Dao,作為數據訪問對象,用于會話的CRUD操作,例如將Session緩存到Redis中或者是Memcached中,都是通過SessionDAO來實現高可用的操作。
CacheManager:緩存控制器,來管理用戶、角色、權限等緩存操作,因為這些數據都是很少去改變的東西,所以放到緩存中用來提高性能。
Cryptography:密碼模塊,Shiro提高安全性能的密碼的加解密操作。
總結
作為Shiro一個常用的安全框架,,雖然功能呢沒有SpringSecurity那么強大,但是小巧,靈活性較高,在使用的過程中可以實現一些自定義的特殊功能。上面簡單的學習了在Shiro經常使用到的組件。后面的分享學習中還會有更多的精彩。
另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:Shiro項目應用Shiro系列-Shiro簡介-創(chuàng)新互聯
新聞來源:http://chinadenli.net/article28/dhsjjp.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站收錄、搜索引擎優(yōu)化、網站設計公司、關鍵詞優(yōu)化、品牌網站制作、品牌網站設計
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯