1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Spring Security 和 Shiro 該如何選擇?

        共 1975字,需瀏覽 4分鐘

         ·

        2022-01-11 17:46

        點(diǎn)擊上方“Java技術(shù)江湖”,選擇“設(shè)為星標(biāo)

        回復(fù)”666“獲取全網(wǎng)最熱的Java核心知識(shí)點(diǎn)整理



        要知道Shiro和Spring Security該如何選擇,首先要看看兩者的區(qū)別和對(duì)比

        Shiro

        Apache Shiro是一個(gè)強(qiáng)大且易用的Java安全框架,能夠非常清晰的處理認(rèn)證、授權(quán)、管理會(huì)話以及密碼加密。使用Shiro的易于理解的API,您可以快速、輕松地獲得任何應(yīng)用程序,從最小的移動(dòng)應(yīng)用程序到最大的網(wǎng)絡(luò)和企業(yè)應(yīng)用程序。

        執(zhí)行流程

        圖片

        特點(diǎn)

        1. 易于理解的 Java Security API;
        2. 簡(jiǎn)單的身份認(rèn)證(登錄),支持多種數(shù)據(jù)源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
        3. 對(duì)角色的簡(jiǎn)單的簽權(quán)(訪問(wèn)控制),支持細(xì)粒度的簽權(quán);
        4. 支持一級(jí)緩存,以提升應(yīng)用程序的性能;
        5. 內(nèi)置的基于 POJO 企業(yè)會(huì)話管理,適用于 Web 以及非 Web 的環(huán)境;
        6. 異構(gòu)客戶(hù)端會(huì)話訪問(wèn);
        7. 非常簡(jiǎn)單的加密 API;
        8. 不跟任何的框架或者容器捆綁,可以獨(dú)立運(yùn)行。

        Spring Security

        Spring Security 主要實(shí)現(xiàn)了Authentication(認(rèn)證,解決who are you? ) 和 Access Control(訪問(wèn)控制,也就是what are you allowed to do?,也稱(chēng)為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)捆綁在一起。

        執(zhí)行流程

        圖片
        1. 客戶(hù)端發(fā)起一個(gè)請(qǐng)求,進(jìn)入 Security 過(guò)濾器鏈。
        2. 當(dāng)?shù)?LogoutFilter 的時(shí)候判斷是否是登出路徑,如果是登出路徑則到 logoutHandler ,如果登出成功則到 logoutSuccessHandler 登出成功處理,如果登出失敗則由 ExceptionTranslationFilter ;如果不是登出路徑則直接進(jìn)入下一個(gè)過(guò)濾器。
        3. 當(dāng)?shù)?UsernamePasswordAuthenticationFilter 的時(shí)候判斷是否為登錄路徑,如果是,則進(jìn)入該過(guò)濾器進(jìn)行登錄操作,如果登錄失敗則到 AuthenticationFailureHandler 登錄失敗處理器處理,如果登錄成功則到 AuthenticationSuccessHandler 登錄成功處理器處理,如果不是登錄請(qǐng)求則不進(jìn)入該過(guò)濾器。
        4. 當(dāng)?shù)?FilterSecurityInterceptor 的時(shí)候會(huì)拿到 uri ,根據(jù) uri 去找對(duì)應(yīng)的鑒權(quán)管理器,鑒權(quán)管理器做鑒權(quán)工作,鑒權(quán)成功則到 Controller 層否則到 AccessDeniedHandler 鑒權(quán)失敗處理器處理。

        特點(diǎn)

        shiro能實(shí)現(xiàn)的,Spring Security 基本都能實(shí)現(xiàn),依賴(lài)于Spring體系,但是好處是Spring全家桶的親兒子,集成上更加契合,在使用上,比shiro略負(fù)責(zé)。

        兩者對(duì)比

        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)行。

        我的看法

        如果開(kāi)發(fā)的項(xiàng)目是Spring這一套,用Spring Security我覺(jué)得更合適一些,他們本身就是一套東西,順暢,可能略微復(fù)雜一些,但是學(xué)會(huì)了就是自己的。如果開(kāi)發(fā)項(xiàng)目比較緊張,Shiro可能更合適,容易上手,也足夠用,Spring Security中有的,Shiro也基本都有,沒(méi)有的部分網(wǎng)上也有大批的解決方案。

        如果項(xiàng)目沒(méi)有使用Spring這一套,不用考慮,直接Shiro。

        同時(shí)要考慮團(tuán)隊(duì)成員的技術(shù)棧,更加熟悉使用哪個(gè),在選型上,也要盡量避免給同行增加不必要的學(xué)習(xí)成本!

        MyBatis 三種批量插入方式的比較,我推薦第3個(gè)!


        Intellij IDEA 神級(jí)插件!效率提升 10 倍!


        手把手教你復(fù)現(xiàn)Log4j2漏洞,千萬(wàn)別中招!



        關(guān)注公眾號(hào)【Java技術(shù)江湖】后回復(fù)“PDF”即可領(lǐng)取200+頁(yè)的《Java工程師面試指南》

        強(qiáng)烈推薦,幾乎涵蓋所有Java工程師必知必會(huì)的知識(shí)點(diǎn),不管是復(fù)習(xí)還是面試,都很實(shí)用。



        瀏覽 50
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            一区二区内射 | 挺进女同学的屁股眼里小说 | 91成人在线免费电影 | 激情无码中文字幕 | 在线播放A片 | 宝贝尿进去了h | 国产又大又长又粗视频在线 | 黄色小说目录 | 2018狠狠干 | 从校服侧面看到小葡萄图片 |