亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中shiro框架和security框架的區(qū)別

 更新時(shí)間:2023年08月17日 10:15:55   作者:飄飄~  
這篇文章主要介紹了Java中shiro框架和security框架的區(qū)別,shiro和security作為兩款流行的功能強(qiáng)大的且易于使用的java安全認(rèn)證框架,在近些年中的項(xiàng)目開發(fā)過(guò)程中使用廣泛,今天我們就來(lái)一起了解一下兩者的區(qū)別

一、shiro

Shiro三個(gè)核心組件:

  • Subject
  • SecurityManager
  • Realms

Subject:主體,代表了當(dāng)前“用戶”,這個(gè)用戶不一定是一個(gè)具體的人,與當(dāng)前應(yīng)用交互的任何東西都是Subject,如網(wǎng)絡(luò)爬蟲,機(jī)器人等;即一個(gè)抽象概念;所有Subject都綁定到SecurityManager,與Subject的所有交互都會(huì)委托給SecurityManager;可以把Subject認(rèn)為是一個(gè)門面;SecurityManager才是實(shí)際的執(zhí)行者;

SecurityManager:安全管理器;即所有與安全有關(guān)的操作都會(huì)與SecurityManager交互;且它管理著所有Subject;可以看出它是Shiro的核心,它負(fù)責(zé)與后邊介紹的其他組件進(jìn)行交互,如果學(xué)習(xí)過(guò)SpringMVC,你可以把它看成DispatcherServlet前端控制器;

Realm:域,Shiro從從Realm獲取安全數(shù)據(jù)(如用戶、角色、權(quán)限),就是說(shuō)SecurityManager要驗(yàn)證用戶身份,那么它需要從Realm獲取相應(yīng)的用戶進(jìn)行比較以確定用戶身份是否合法;也需要從Realm得到用戶相應(yīng)的角色/權(quán)限進(jìn)行驗(yàn)證用戶是否能進(jìn)行操作;可以把Realm看成DataSource,即安全數(shù)據(jù)源。

Shiro架構(gòu)與功能介紹

認(rèn)證與授權(quán)相關(guān)基本概念

  • 安全實(shí)體:系統(tǒng)需要保護(hù)的具體對(duì)象數(shù)據(jù)
  • 權(quán)限:系統(tǒng)相關(guān)的功能操作,例如基本的CRUD
  • Authentication:身份認(rèn)證/登錄,驗(yàn)證用戶是不是擁有相應(yīng)的身份;
  • Authorization:授權(quán),即權(quán)限驗(yàn)證,驗(yàn)證某個(gè)已認(rèn)證的用戶是否擁有某個(gè)權(quán)限;即判斷用戶是否能做事情,常見的如:驗(yàn)證某個(gè)用戶是否擁有某個(gè)角色?;蛘呒?xì)粒度的驗(yàn)證某個(gè)用戶對(duì)某個(gè)資源是否具有某個(gè)權(quán)限;
  • Session Manager:會(huì)話管理,即用戶登錄后就是一次會(huì)話,在沒有退出之前,它的所有信息都在會(huì)話中;會(huì)話可以是普通JavaSE環(huán)境的,也可以是如Web環(huán)境的;
  • Cryptography:加密,保護(hù)數(shù)據(jù)的安全性,如密碼加密存儲(chǔ)到數(shù)據(jù)庫(kù),而不是明文存儲(chǔ);
  • Web Support:Web支持,可以非常容易的集成到Web環(huán)境;
  • Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權(quán)限不必每次去查,這樣可以提高效率;
  • Concurrency:shiro支持多線程應(yīng)用的并發(fā)驗(yàn)證,即如在一個(gè)線程中開啟另一個(gè)線程,能把權(quán)限自動(dòng)傳播過(guò)去;
  • Testing:提供測(cè)試支持;
  • Run As:允許一個(gè)用戶假裝為另一個(gè)用戶(如果他們?cè)试S)的身份進(jìn)行訪問(wèn);
  • Remember Me:記住我,這個(gè)是非常常見的功能,即一次登錄后,下次再來(lái)的話不用登錄了。  

二、 security

Spring Security 主要實(shí)現(xiàn)了Authentication(認(rèn)證,解決who are you ) 和 Access Control(訪問(wèn)控制,也就是what are you allowed to do?,也稱為Authorization)。

Spring Security在架構(gòu)上將認(rèn)證與授權(quán)分離,并提供了擴(kuò)展點(diǎn)。

它是一個(gè)輕量級(jí)的安全框架,它確?;赟pring的應(yīng)用程序提供身份驗(yàn)證和授權(quán)支持。

它與Spring MVC有很好地集成,并配備了流行的安全算法實(shí)現(xiàn)捆綁在一起。

實(shí)現(xiàn)流程:

客戶端發(fā)起一個(gè)請(qǐng)求,進(jìn)入 Security 過(guò)濾器鏈。

當(dāng)?shù)?LogoutFilter 的時(shí)候判斷是否是登出路徑,如果是登出路徑則到 logoutHandler ,如果登出成功則到 logoutSuccessHandler 登出成功處理,如果登出失敗則由 ExceptionTranslationFilter ;如果不是登出路徑則直接進(jìn)入下一個(gè)過(guò)濾器。

當(dāng)?shù)?UsernamePasswordAuthenticationFilter 的時(shí)候判斷是否為登錄路徑,如果是,則進(jìn)入該過(guò)濾器進(jìn)行登錄操作,如果登錄失敗則到 AuthenticationFailureHandler 登錄失敗處理器處理,如果登錄成功則到 AuthenticationSuccessHandler 登錄成功處理器處理,如果不是登錄請(qǐng)求則不進(jìn)入該過(guò)濾器。

當(dāng)?shù)?FilterSecurityInterceptor 的時(shí)候會(huì)拿到 uri ,根據(jù) uri 去找對(duì)應(yīng)的鑒權(quán)管理器,鑒權(quán)管理器做鑒權(quán)工作,鑒權(quán)成功則到 Controller 層否則到 AccessDeniedHandler 鑒權(quán)失敗處理器處理。

三、區(qū)別

Shiro比Spring Security更容易使用,也就是實(shí)現(xiàn)上簡(jiǎn)單一些,同時(shí)基本的授權(quán)認(rèn)證Shiro也基本夠用Spring Security社區(qū)支持度更高,Spring社區(qū)的親兒子,支持力度和更新維護(hù)上有優(yōu)勢(shì),同時(shí)和Spring這一套的結(jié)合較好。

Shiro 功能強(qiáng)大、且 簡(jiǎn)單、靈活。

是Apache 下的項(xiàng)目比較可靠,且不跟任何的框架或者容器綁定,可以獨(dú)立運(yùn)行。

總結(jié): 

最終選擇還是看項(xiàng)目,如果是spring項(xiàng)目那一套,盡量還是選擇Spring Security,能更加方便順暢。

但相比于shiro略微復(fù)雜,如果項(xiàng)目周期短,盡量還是選擇shiro,功能齊全且他人解決方法多。 

到此這篇關(guān)于Java中shiro框架和security框架的區(qū)別的文章就介紹到這了,更多相關(guān)shiro和security的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 對(duì)象數(shù)組排序

    java 對(duì)象數(shù)組排序

    當(dāng)遇到數(shù)組排序時(shí),我們經(jīng)常會(huì)使用學(xué)過(guò)的幾種排序方法,而java 本身提供了Arrays.sort,在數(shù)據(jù)元素較少或者對(duì)效率要求不是抬高時(shí),直接使用Arrays.sort來(lái)的更容易。查看一下源碼后Arrays.sort 本身采用的是快速排序。
    2015-04-04
  • JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼

    JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼

    這篇文章主要介紹了JNI實(shí)現(xiàn)最簡(jiǎn)單的JAVA調(diào)用C/C++代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 使用maven依賴詳解

    使用maven依賴詳解

    本文主要介紹了Maven的基礎(chǔ)知識(shí),包括Maven的簡(jiǎn)介、倉(cāng)庫(kù)類型、常用命令、場(chǎng)景舉例、指令總結(jié)、依賴范圍、settings.xml說(shuō)明等,同時(shí),還詳細(xì)講解了Maven依賴的傳遞、手動(dòng)聲明optional、沖突解決等概念
    2025-02-02
  • Synchronized?和?ReentrantLock?的實(shí)現(xiàn)原理及區(qū)別

    Synchronized?和?ReentrantLock?的實(shí)現(xiàn)原理及區(qū)別

    這篇文章主要介紹了Synchronized?和?ReentrantLock?的實(shí)現(xiàn)原理及區(qū)別,文章為榮啊主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件

    SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件

    yml,yaml,properties三種文件都是用來(lái)存放配置的文件,一些靜態(tài)數(shù)據(jù),配置的數(shù)據(jù)都會(huì)存放到里邊。本文主要為大家整理了SpringBoot實(shí)現(xiàn)讀取YML,yaml,properties文件的方法,需要的可以參考一下
    2023-04-04
  • 快速上手Java中的Properties集合類

    快速上手Java中的Properties集合類

    java.util.Properties集合繼承于Hashtable,來(lái)表示一個(gè)持久的屬性集,他使用鍵值結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),每個(gè)鍵及其對(duì)應(yīng)的值都是一個(gè)字符串,該類被許多java類使用,下面這篇文章主要給大家介紹了關(guān)于如何快速上手Java中Properties集合類的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Spring Boot 集成 Kafka的詳細(xì)步驟

    Spring Boot 集成 Kafka的詳細(xì)步驟

    Spring Boot與Kafka的集成使得消息隊(duì)列的使用變得更加簡(jiǎn)單和高效,可以配置 Kafka、實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者,并利用 Spring Boot 提供的功能處理消息流,以下是 Spring Boot 集成 Kafka 的詳細(xì)步驟,包括配置、生產(chǎn)者和消費(fèi)者的實(shí)現(xiàn)以及一些高級(jí)特性,感興趣的朋友一起看看吧
    2024-07-07
  • Java for循環(huán)幾種寫法整理

    Java for循環(huán)幾種寫法整理

    這篇文章主要介紹了Java for循環(huán)幾種寫法整理的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 深入了解Springboot核心知識(shí)點(diǎn)之?dāng)?shù)據(jù)訪問(wèn)配置

    深入了解Springboot核心知識(shí)點(diǎn)之?dāng)?shù)據(jù)訪問(wèn)配置

    這篇文章主要為大家介紹了Springboot核心知識(shí)點(diǎn)中的數(shù)據(jù)訪問(wèn)配置,文中的示例代碼講解詳細(xì),對(duì)我們了解SpringBoot有一定幫助,快跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12
  • JMeter參數(shù)化4種實(shí)現(xiàn)方式(小結(jié))

    JMeter參數(shù)化4種實(shí)現(xiàn)方式(小結(jié))

    參數(shù)化是自動(dòng)化測(cè)試腳本的一種常用技巧,可將腳本中的某些輸入使用參數(shù)來(lái)代替,JMeter提供了多種參數(shù)化方式,下面就其中常用的4種展開闡述,感興趣的可以來(lái)了解一下
    2021-12-12

最新評(píng)論