簡單介紹SpringSecurity框架簡介及與shiro特點對比
導讀 |
這篇文章是SpringSecurity框架的入門篇,主要為大家介紹了SpringSecurity框架簡介及與shiro優缺點對比有需要的朋友可以借鑑參考下,希望能夠有所幫助
|
本專欄內容目前已經比較系統了,核心內容也相對完整,本系列文章會根據Spring Security社群的發展逐步的更新內容。請大家多多關注 之家~
官網:https://spring.io/projects/spring-security
Spring Security 是強大的,且容易定製的,基於Spring開發的實現認證登入與資源授權的應用安全框架。
SpringSecurity 的核心功能:
Authentication:身份認證,使用者登陸的驗證(解決你是誰的問題)
Authorization:訪問授權,授權系統資源的訪問許可權(解決你能幹什麼的問題)
安全防護,防止跨站請求,session 攻擊等
目前在java web應用安全框架中,與Spring Security形成直接競爭的就是shiro,二者在核心功能上幾乎差不多,但從使用的角度各有優缺點。筆者認為:沒有最好的,只有最合適的。
Shiro的使用量一直高於spring security。但是從趨勢上來看(2020年10月的百度指數),Spring Security是在一直上升的,shiro的使用量同比、環比都進入了下滑期。
通常來說,shiro入門更加容易,使用起來也非常簡單,這也是造成shiro的使用量一直高於Spring Security的主要原因。但是從筆者的角度來看,二者其實都簡單,我說說我的理由:
在沒有Spring Boot之前,Spring Security的大部分配置要透過XML實現,配置還是還是非常複雜的。但是有了 Spring Boot之後,這一情況已經得到顯著改善。
Spring Security之所以看上去比shiro更復雜,其實是因為它引入了一些不常用的概念與規則。大家應該都知道2/8法則,這在Spring Security裡面體現的特別明顯,如果你只學Spring Security最重要的那20%,這20%的複雜度和shiro基本是一致的。也就是說,不重要的那80%,恰恰是Spring Security比shiro的“複雜度”。
也就是說,如果有人能幫你把Spring Security最重要的那20%摘出來,二者的入門門檻、複雜度其實是差不太多的。
Spring Security依託於Spring龐大的社群支援,這點自不必多說。shiro屬於apache社群,因為它的廣泛使用,文件也非常的全面。二者從社群支援來看,幾乎不相上下。
但是從社群發展的角度看,Spring Security明顯更佔優勢,隨著Spring Cloud、Spring Boot、Spring Social的長足進步,這種優勢會越來越大。因為Spring Security畢竟是Spring的親兒子,Spring Security未來在於Spring系列框架整合的時候一定會有更好的融合性,前瞻性、相容性!這也是為什麼我們要學Spring Security的主要原因!
Spring Security因為它的複雜,所以從功能的豐富性的角度更勝一籌。其中比較典型的如:
Spring Security預設含有對OAuth2.0的支援,與Spring Social一起使用完成社交媒體登入也比較方便。shiro在這方面只能靠自己寫程式碼實現。
還有一種普遍說法:Spring Security在網路安全的方面下的功夫更多,但是筆者並未有非常直接的感受,有可能出現安全問題的時候才會感到不夠安全的痛。
如果你只是想實現一個簡單的web應用,shiro更加的輕量級,學習成本也更低。如果您正在開發一個分散式的、微服務的、或者與Spring Cloud系列框架深度整合的專案,筆者還是建議您使用Spring Security。
原文來自: https://www.linuxprobe.com/springsecurity-shiro-linux.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2886822/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js 特權方法簡單介紹JS
- Lucene介紹及簡單應用
- OpenGL簡單介紹及實踐
- 深度學習中的框架特點及介紹深度學習框架
- js與&&運算子簡單介紹JS
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS
- UICollectionView 簡單介紹UIView
- css簡單介紹CSS
- 簡單介紹Linux作業系統的九大特點!Linux作業系統
- Docker(3):Dockerfile介紹及簡單示例Docker
- 簡單介紹nginx反向代理及使用Nginx
- JSON的優點簡單介紹JSON
- ROWID與ROWNUM的簡介與對比
- 簡單介紹 "&&" 與 “&” 和 ”|“ 與 ”||“ 的區別
- Disruptor的簡單介紹與應用
- POP簡單介紹與使用實踐
- RPC簡單介紹RPC
- Webpack 的簡單介紹Web
- spark簡單介紹(一)Spark
- Flutter key簡單介紹Flutter
- Python簡單介紹Python
- <svg>元素簡單介紹SVG
- Git_簡單介紹Git
- JSON簡單介紹JSON
- 簡單介紹克隆 JavaScriptJavaScript
- 簡單介紹 ldd 命令
- javascript物件簡單介紹JavaScript物件
- CSS OOCSS簡單介紹CSS
- CSS SMACSS簡單介紹CSSMac
- CSS BEM簡單介紹CSS
- javascript this指向簡單介紹JavaScript
- javascript加密簡單介紹JavaScript加密