最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、shiro

Shiro三個核心組件:

  • Subject
  • SecurityManager
  • Realms

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

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

Realm:域,Shiro從從Realm獲取安全數(shù)據(jù)(如用戶、角色、權(quán)限),就是說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ù)的具體對象數(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)證某個已認(rèn)證的用戶是否擁有某個權(quán)限;即判斷用戶是否能做事情,常見的如:驗(yàn)證某個用戶是否擁有某個角色?;蛘呒?xì)粒度的驗(yàn)證某個用戶對某個資源是否具有某個權(quán)限;
  • Session Manager:會話管理,即用戶登錄后就是一次會話,在沒有退出之前,它的所有信息都在會話中;會話可以是普通JavaSE環(huán)境的,也可以是如Web環(huán)境的;
  • Cryptography:加密,保護(hù)數(shù)據(jù)的安全性,如密碼加密存儲到數(shù)據(jù)庫,而不是明文存儲;
  • Web Support:Web支持,可以非常容易的集成到Web環(huán)境;
  • Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權(quán)限不必每次去查,這樣可以提高效率;
  • Concurrency:shiro支持多線程應(yīng)用的并發(fā)驗(yàn)證,即如在一個線程中開啟另一個線程,能把權(quán)限自動傳播過去;
  • Testing:提供測試支持;
  • Run As:允許一個用戶假裝為另一個用戶(如果他們允許)的身份進(jìn)行訪問;
  • Remember Me:記住我,這個是非常常見的功能,即一次登錄后,下次再來的話不用登錄了。  

二、 security

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

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

它是一個輕量級的安全框架,它確保基于Spring的應(yīng)用程序提供身份驗(yàn)證和授權(quán)支持。

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

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

客戶端發(fā)起一個請求,進(jìn)入 Security 過濾器鏈。

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

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

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

三、區(qū)別

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

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

是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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程實(shí)現(xiàn)第三方數(shù)據(jù)同步

    Java多線程實(shí)現(xiàn)第三方數(shù)據(jù)同步

    這篇文章主要為大家詳細(xì)介紹了Java多線程實(shí)現(xiàn)第三方數(shù)據(jù)同步,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • java線程本地變量ThreadLocal詳解

    java線程本地變量ThreadLocal詳解

    ThreadLocal則為每一個線程提供了一個變量副本,從而隔離了多個線程訪問數(shù)據(jù)的沖突,ThreadLocal提供了線程安全的對象封裝,下面我們就來詳細(xì)了解一下吧
    2019-06-06
  • java spring整合junit操作(有詳細(xì)的分析過程)

    java spring整合junit操作(有詳細(xì)的分析過程)

    這篇文章主要介紹了java spring整合junit操作(有詳細(xì)的分析過程),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring基于注解管理bean實(shí)現(xiàn)方式講解

    Spring基于注解管理bean實(shí)現(xiàn)方式講解

    很多時候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來選擇是否在容器中加載某個Bean,這就是Bean的加載控制,一般我們可以通過編程式或注解式兩種不同的方式來完成Bean的管理
    2023-01-01
  • 使用Jackson 處理 null 或者 空字符串

    使用Jackson 處理 null 或者 空字符串

    這篇文章主要介紹了使用Jackson 處理 null 或者 空字符串,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot中支持Https協(xié)議的實(shí)現(xiàn)

    SpringBoot中支持Https協(xié)議的實(shí)現(xiàn)

    本文主要介紹了SpringBoot中支持Https協(xié)議的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • java list中包含某個字符串的兩種方法實(shí)現(xiàn)

    java list中包含某個字符串的兩種方法實(shí)現(xiàn)

    在Java開發(fā)中,經(jīng)常需要判斷一個List中是否包含特定的字符串,包括使用contains()方法和循環(huán)遍歷判斷,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java中初始化List的5種方法示例

    Java中初始化List的5種方法示例

    這篇文章主要給大家介紹了關(guān)于Java中初始化List的5種方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Java中注解@JsonFormat的用法詳解

    Java中注解@JsonFormat的用法詳解

    這篇文章主要給大家介紹了關(guān)于Java中注解@JsonFormat用法的相關(guān)資料,以及分享了@JsonFormat 將枚舉序列化為對象的方法,文中給出了詳細(xì)的代碼實(shí)例,需要的朋友可以參考下
    2023-01-01
  • MyBatis主鍵生成策略中useGeneratedKeys和<selectKey>的區(qū)別

    MyBatis主鍵生成策略中useGeneratedKeys和<selectKey>的區(qū)別

    本文主要介紹了MyBatis主鍵生成策略中useGeneratedKeys和<selectKey>的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評論

抚顺市| 黄梅县| 绥化市| 留坝县| 盐边县| 商南县| 同江市| 沙河市| 新河县| 隆子县| 香河县| 邵武市| 开封县| 北碚区| 常德市| 内江市| 亚东县| 尉氏县| 房产| 五峰| 建昌县| 城固县| 休宁县| 彝良县| 鄂托克前旗| 长子县| 鄯善县| 江西省| 大宁县| 宜章县| 崇信县| 南开区| 临清市| 陕西省| 民丰县| 辛集市| 龙游县| 青海省| 无极县| 阿尔山市| 白沙|