SpringSecurity框架簡(jiǎn)介及與shiro特點(diǎn)對(duì)比
前言
本專欄內(nèi)容目前已經(jīng)比較系統(tǒng)了,核心內(nèi)容也相對(duì)完整,本系列文章會(huì)根據(jù)Spring Security社區(qū)的發(fā)展逐步的更新內(nèi)容。請(qǐng)大家多多關(guān)注腳本之家~
一、 SpringSecurity 框架簡(jiǎn)介
官網(wǎng):https://spring.io/projects/spring-security
Spring Security 是強(qiáng)大的,且容易定制的,基于Spring開(kāi)發(fā)的實(shí)現(xiàn)認(rèn)證登錄與資源授權(quán)的應(yīng)用安全框架。
SpringSecurity 的核心功能:
- Authentication:身份認(rèn)證,用戶登陸的驗(yàn)證(解決你是誰(shuí)的問(wèn)題)
- Authorization:訪問(wèn)授權(quán),授權(quán)系統(tǒng)資源的訪問(wèn)權(quán)限(解決你能干什么的問(wèn)題)
- 安全防護(hù),防止跨站請(qǐng)求,session 攻擊等
二、比較一下shiro與Spring Security
目前在java web應(yīng)用安全框架中,與Spring Security形成直接競(jìng)爭(zhēng)的就是shiro,二者在核心功能上幾乎差不多,但從使用的角度各有優(yōu)缺點(diǎn)。筆者認(rèn)為:沒(méi)有最好的,只有最合適的。
2.1.用戶量
Shiro的使用量一直高于spring security。但是從趨勢(shì)上來(lái)看(2020年10月的百度指數(shù)),Spring Security是在一直上升的,shiro的使用量同比、環(huán)比都進(jìn)入了下滑期。
2.2.使用的方便程度
通常來(lái)說(shuō),shiro入門更加容易,使用起來(lái)也非常簡(jiǎn)單,這也是造成shiro的使用量一直高于Spring Security的主要原因。但是從筆者的角度來(lái)看,二者其實(shí)都簡(jiǎn)單,我說(shuō)說(shuō)我的理由:
- 在沒(méi)有Spring Boot之前,Spring Security的大部分配置要通過(guò)XML實(shí)現(xiàn),配置還是還是非常復(fù)雜的。但是有了 Spring Boot之后,這一情況已經(jīng)得到顯著改善。
- Spring Security之所以看上去比shiro更復(fù)雜,其實(shí)是因?yàn)樗肓艘恍┎怀S玫母拍钆c規(guī)則。大家應(yīng)該都知道2/8法則,這在Spring Security里面體現(xiàn)的特別明顯,如果你只學(xué)Spring Security最重要的那20%,這20%的復(fù)雜度和shiro基本是一致的。也就是說(shuō),不重要的那80%,恰恰是Spring Security比shiro的“復(fù)雜度”。
也就是說(shuō),如果有人能幫你把Spring Security最重要的那20%摘出來(lái),二者的入門門檻、復(fù)雜度其實(shí)是差不太多的。
2.3.社區(qū)支持
Spring Security依托于Spring龐大的社區(qū)支持,這點(diǎn)自不必多說(shuō)。shiro屬于apache社區(qū),因?yàn)樗膹V泛使用,文檔也非常的全面。二者從社區(qū)支持來(lái)看,幾乎不相上下。
但是從社區(qū)發(fā)展的角度看,Spring Security明顯更占優(yōu)勢(shì),隨著Spring Cloud、Spring Boot、Spring Social的長(zhǎng)足進(jìn)步,這種優(yōu)勢(shì)會(huì)越來(lái)越大。因?yàn)镾pring Security畢竟是Spring的親兒子,Spring Security未來(lái)在于Spring系列框架集成的時(shí)候一定會(huì)有更好的融合性,前瞻性、兼容性!這也是為什么我們要學(xué)Spring Security的主要原因!
2.4.功能豐富性
Spring Security因?yàn)樗膹?fù)雜,所以從功能的豐富性的角度更勝一籌。其中比較典型的如:
- Spring Security默認(rèn)含有對(duì)OAuth2.0的支持,與Spring Social一起使用完成社交媒體登錄也比較方便。shiro在這方面只能靠自己寫代碼實(shí)現(xiàn)。
- 還有一種普遍說(shuō)法:Spring Security在網(wǎng)絡(luò)安全的方面下的功夫更多,但是筆者并未有非常直接的感受,有可能出現(xiàn)安全問(wèn)題的時(shí)候才會(huì)感到不夠安全的痛。
三、總結(jié)
如果你只是想實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web應(yīng)用,shiro更加的輕量級(jí),學(xué)習(xí)成本也更低。如果您正在開(kāi)發(fā)一個(gè)分布式的、微服務(wù)的、或者與Spring Cloud系列框架深度集成的項(xiàng)目,筆者還是建議您使用Spring Security。
以上就是SpringSecurity框架簡(jiǎn)介及與shiro特點(diǎn)對(duì)比的詳細(xì)內(nèi)容,更多關(guān)于SpringSecurity與shiro框架對(duì)比的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Web開(kāi)發(fā)/設(shè)計(jì)人員應(yīng)當(dāng)知道的15個(gè)網(wǎng)站
建個(gè)好網(wǎng)站絕非易事,工欲善其事必先利其器。本文編譯了15個(gè)極其有用的網(wǎng)站,任何一位網(wǎng)站開(kāi)發(fā)者或設(shè)計(jì)人員都應(yīng)該收藏起來(lái)2011-05-05加速?PyTorch?模型訓(xùn)練的?9?個(gè)技巧(收藏)
本指南從最簡(jiǎn)單的結(jié)構(gòu)到最復(fù)雜的改動(dòng)都有,可以使你的網(wǎng)絡(luò)得到最大的好處。我會(huì)給你展示示例Pytorch代碼以及可以在Pytorch-?lightning?Trainer中使用的相關(guān)flags,這樣你可以不用自己編寫這些代碼,感興趣的朋友一起看看吧2022-03-03程序員開(kāi)發(fā)項(xiàng)目是選擇效率還是質(zhì)量呢?
這篇文章主要介紹了程序員開(kāi)發(fā)項(xiàng)目是選擇效率還是質(zhì)量呢?本文對(duì)這個(gè)每個(gè)程序員都會(huì)遇到的一個(gè)問(wèn)題做了講解,需要的朋友可以參考下2014-07-07在IDEA中配置SFTP遠(yuǎn)程Linux服務(wù)器系統(tǒng)的實(shí)現(xiàn)
本文主要介紹了在IDEA中配置SFTP遠(yuǎn)程Linux服務(wù)器系統(tǒng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12關(guān)于IE11修改User-agent不再支持document.all等
這篇文章主要介紹了關(guān)于IE11修改User-agent不再支持document.all等,需要的朋友可以參考下2015-12-12Git基礎(chǔ)學(xué)習(xí)之標(biāo)簽tag的使用詳解
標(biāo)簽對(duì)象(tag?object)?非常類似于一個(gè)提交對(duì)象,它包含一個(gè)標(biāo)簽創(chuàng)建者信息、一個(gè)日期、一段注釋信息,以及一個(gè)指針。本文主要介紹了Git?標(biāo)簽tag的使用,需要的可以參考一下2022-10-10