<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Security 和 Shiro 該如何選擇?

          共 1975字,需瀏覽 4分鐘

           ·

          2022-01-11 17:46

          點擊上方“Java技術江湖”,選擇“設為星標

          回復”666“獲取全網最熱的Java核心知識點整理



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

          Shiro

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

          執(zhí)行流程

          圖片

          特點

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

          Spring Security

          Spring Security 主要實現(xiàn)了Authentication(認證,解決who are you? ) 和 Access Control(訪問控制,也就是what are you allowed to do?,也稱為Authorization)。Spring Security在架構上將認證與授權分離,并提供了擴展點。它是一個輕量級的安全框架,它確保基于Spring的應用程序提供身份驗證和授權支持。它與Spring MVC有很好地集成 ,并配備了流行的安全算法實現(xiàn)捆綁在一起。

          執(zhí)行流程

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

          特點

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

          兩者對比

          Shiro比Spring Security更容易使用,也就是實現(xiàn)上簡單一些,同時基本的授權認證Shiro也基本夠用

          Spring Security社區(qū)支持度更高,Spring社區(qū)的親兒子,支持力度和更新維護上有優(yōu)勢,同時和Spring這一套的結合較好。

          Shiro 功能強大、且 簡單、靈活。是Apache 下的項目比較可靠,且不跟任何的框架或者容器綁定,可以獨立運行。

          我的看法

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

          如果項目沒有使用Spring這一套,不用考慮,直接Shiro。

          同時要考慮團隊成員的技術棧,更加熟悉使用哪個,在選型上,也要盡量避免給同行增加不必要的學習成本!

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


          Intellij IDEA 神級插件!效率提升 10 倍!


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



          關注公眾號【Java技術江湖】后回復“PDF”即可領取200+頁的《Java工程師面試指南》

          強烈推薦,幾乎涵蓋所有Java工程師必知必會的知識點,不管是復習還是面試,都很實用。



          瀏覽 50
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品九九 | 亚洲成人影视av 亚洲成人在线导航 | 色婷婷婷婷色 | 亚洲三级精品视频 | 成人少妇永久网站 |