Shiro項(xiàng)目應(yīng)用Shiro系列-Shiro簡(jiǎn)介-創(chuàng)新互聯(lián)

簡(jiǎn)單介紹
對(duì)于Shiro來(lái)說(shuō)不僅可以使用到JavaSE的開(kāi)發(fā)中,還可以使用到JavaEE的開(kāi)發(fā)中,Shiro可以完成的工作有。認(rèn)證、授權(quán)、加密、會(huì)話管理、與Web的集成、緩存等等操作,shiro 應(yīng)用實(shí)例 www.1b23.com,在SpringBoot使用前端框架的時(shí)候就整合了Shiro并且與Thymeleaf整合的也是非常好。
下面就是關(guān)于Shiro簡(jiǎn)單的功能架構(gòu)圖

創(chuàng)新互聯(lián)建站專注于紫金企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。紫金網(wǎng)站建設(shè)公司,為紫金等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

Shiro 項(xiàng)目應(yīng)用 Shiro系列-Shiro簡(jiǎn)介

Authentication 身份認(rèn)證/登錄,驗(yàn)證用戶是不是擁有相應(yīng)的身份。
Authorization 授權(quán),權(quán)限驗(yàn)證,驗(yàn)證某個(gè)已經(jīng)認(rèn)證的用戶是否有某個(gè)權(quán)限,也就是判斷用戶是否能做什么樣的事情。例如驗(yàn)證用戶是否是某個(gè)角色
Session Manager 會(huì)話管理,也就是用戶登錄后就是一次會(huì)話,在沒(méi)有退出之前,它的所有信息都在會(huì)話中,會(huì)話可以是普通的JavaSE會(huì)話,也可以是Web會(huì)話。
Cryptography 加密,保護(hù)數(shù)據(jù)的安全性,例如密碼加密存儲(chǔ)到數(shù)據(jù)庫(kù),而不是通過(guò)明文存儲(chǔ)
Web Support Web支持,可以很容易的集成到Web環(huán)境中。
Caching 緩存,例如用戶登錄之后,其用戶信息、用戶角色權(quán)限等都不需要每次都進(jìn)行查詢。這樣可以提高效率
Concurrency Shiro 支持多線程應(yīng)用并發(fā)驗(yàn)證,即在一個(gè)線程中開(kāi)啟另一個(gè)線程能把權(quán)限自動(dòng)傳播過(guò)去;
Testing 提供測(cè)試支持
Run As 允許一個(gè)用戶偽裝成為另一個(gè)用戶進(jìn)行訪問(wèn)
Remember Me 記住我。下次登錄的時(shí)候不用登錄

注意
Shiro 不會(huì)維護(hù)用戶、維護(hù)權(quán)限;這些都是需要通過(guò)用戶設(shè)計(jì)來(lái)實(shí)現(xiàn),然后通過(guò)對(duì)應(yīng)的方式注入到Shiro中即可。

Shiro工作流

Shiro 項(xiàng)目應(yīng)用 Shiro系列-Shiro簡(jiǎn)介

從上圖可以看出來(lái),與應(yīng)用程序代碼直接交互的是Subject對(duì)象,也就是說(shuō)Shiro對(duì)外的API核心的內(nèi)容就是Subject,下面就來(lái)介紹一下整個(gè)交互過(guò)程中的各個(gè)API含義

Subject:主體,代表當(dāng)前用戶,這里的用戶并不是指具體的人,與當(dāng)前應(yīng)用交互的任何的東西都是Subject,例如客戶端等等,也就是說(shuō)這個(gè)是一個(gè)抽象的概念,所有的Subject都綁定到一個(gè)SecurityManager,與Subject的所有交互都要委托到SecurityManager;可以把Subject看做是一個(gè)代理,真正的執(zhí)行者是SecurityManager。
SecurityManager:安全管理器;也就是是所有跟安全相關(guān)的操作都會(huì)與SecurityManager進(jìn)行交互。并且他還管理所有的Subject,可以看出它才是真正的Shiro的核心,負(fù)責(zé)與后面要介紹的其他組件進(jìn)行交互。也就是類似于SpringMVC中的DispacherSevlet前端控制器
Realm 域,Shiro從Realm獲取安全數(shù)據(jù)例如用戶、角色、權(quán)限等等,也就是說(shuō)Security Manager要驗(yàn)證用戶身份,那么他需要從Realm獲取相應(yīng)的用戶進(jìn)行比較確定用戶身份是否合法。也需要從Realm中得到用戶相應(yīng)的角色權(quán)限驗(yàn)證用戶是否能進(jìn)行操作;可以把Realm看成是一個(gè)DataSource,也就是一個(gè)類似于安全數(shù)據(jù)源。

也就是說(shuō),Shiro不提供用戶權(quán)限,但是通過(guò)Realm進(jìn)行維護(hù)

Shiro內(nèi)部架構(gòu)

Shiro 項(xiàng)目應(yīng)用 Shiro系列-Shiro簡(jiǎn)介

從圖中可以看到所有的應(yīng)用于Shiro交互都是通過(guò)Subject來(lái)實(shí)現(xiàn)的。

Subject:主體,任何應(yīng)用交互的抽象用戶
SecurityManager:類似于SpringMVC中的DispatchServlet,是Shiro中的核心內(nèi)容,所有的操作都是通過(guò)SecurityManager進(jìn)行的控制,管理這所有的Subject、并且負(fù)責(zé)認(rèn)證授權(quán)會(huì)話管理等等。
Authenticator:認(rèn)證器,負(fù)責(zé)主體的認(rèn)證,這個(gè)是擴(kuò)展點(diǎn),如果開(kāi)發(fā)者覺(jué)得Shiro默認(rèn)的不好用,也可以自己實(shí)現(xiàn)自己的認(rèn)證策略,也就是在什么樣的情況下才算是用戶認(rèn)證通過(guò)。
Authrizer:授權(quán)器,或者是訪問(wèn)控制器,用來(lái)決定主體是否有權(quán)限進(jìn)行相應(yīng)的操作;也就是控制用戶能訪問(wèn)應(yīng)用中的哪些功能。
Realm:可以有一個(gè)也可以有多個(gè),安全實(shí)體數(shù)據(jù)源,也就是通過(guò)這個(gè)獲取到一個(gè)安全的實(shí)體??梢允褂肑DBC實(shí)現(xiàn),可以是LDAP實(shí)現(xiàn),或者是通過(guò)內(nèi)存實(shí)現(xiàn)等等,是由開(kāi)發(fā)者提供。但是需要注意的一點(diǎn)是Shiro并不知道用戶權(quán)限是以哪種格式進(jìn)行存儲(chǔ)的。所以在開(kāi)發(fā)中通常是使用自己的自定義的來(lái)進(jìn)行控制。
SessionManager:在Servlet中,Session是一個(gè)重要的概念,而Shiro中對(duì)于Session的管理就是通過(guò)SessionManager進(jìn)行管理,Shiro不僅僅可以用在Web環(huán)境中,也可以使用到非Web環(huán)境的JavaSE中,所以,Shiro抽象了一個(gè)Session來(lái)管理主體與應(yīng)用之間的數(shù)據(jù)交互,這樣的話,例如在一個(gè)Web環(huán)境中使用了是Web服務(wù)器但是在其他客戶端中使用的就不是Web服務(wù)器,這就導(dǎo)致一個(gè)問(wèn)題Session放到哪里,這里推薦使用的是Memcached也就是進(jìn)行緩存操作。利用分布式操作將Session存到一個(gè)統(tǒng)一的地方,所有的服務(wù)器都從同一個(gè)地方獲取Session的數(shù)據(jù)。
Session DAO:對(duì)于Dao,作為數(shù)據(jù)訪問(wèn)對(duì)象,用于會(huì)話的CRUD操作,例如將Session緩存到Redis中或者是Memcached中,都是通過(guò)SessionDAO來(lái)實(shí)現(xiàn)高可用的操作。
CacheManager:緩存控制器,來(lái)管理用戶、角色、權(quán)限等緩存操作,因?yàn)檫@些數(shù)據(jù)都是很少去改變的東西,所以放到緩存中用來(lái)提高性能。
Cryptography:密碼模塊,Shiro提高安全性能的密碼的加解密操作。

總結(jié)
作為Shiro一個(gè)常用的安全框架,,雖然功能呢沒(méi)有SpringSecurity那么強(qiáng)大,但是小巧,靈活性較高,在使用的過(guò)程中可以實(shí)現(xiàn)一些自定義的特殊功能。上面簡(jiǎn)單的學(xué)習(xí)了在Shiro經(jīng)常使用到的組件。后面的分享學(xué)習(xí)中還會(huì)有更多的精彩。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章題目:Shiro項(xiàng)目應(yīng)用Shiro系列-Shiro簡(jiǎn)介-創(chuàng)新互聯(lián)
新聞來(lái)源:http://muchs.cn/article28/dhsjjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作