spring security為啥是個垃圾框架?

發表於2023-09-21

古時候寫程式碼,許可權這塊寫過一個庫,基本就是一個泛型介面,裡面有幾個方法:

如驗證輸入的principal和credentials,返回token和authorities和roles,role就是一堆authorities集,也就說就是返回一堆authorities。然後每次請求會拿token找到authorities,然後再判斷當前請求的資源(其實就是url)包不包括在authorities內。

這介面實現不復雜,也可很複雜自己實現,因為是介面,裡面的方法引數都帶了很多上下文,所以基本可以獲取到所有有用的資訊。當年用這介面幾乎就沒解決不了的許可權問題。

後來用spring,更簡單了,就是aop一下controller,然後類似那種介面鑑權,不aop就用filter或者攔截器一樣的。

再後來,發現spring security粗略研究下。好呀,什麼AuthenticationManager,AuthenticationProvider,UserDetailsService,SecurityContextHolder,SecurityInterceptor眼花繚亂,無從下手。而且,不知道是我沒注意還是眼瞎,這玩意兒似乎和web或者webflux強耦合。當時有個需求是session(其實就是token)放在redis裡,有個同事為實現這簡單東西似乎要重寫整個HttpSession類?

還有也是因為我們的許可權配置是在另一個服務裡,所以獲取許可權的時候要重寫UserDetailsService?

不知道是我同事水平不夠還是版本太老,反正看的我瑟瑟發抖。

有必要系統學習這東西嗎?其實我看半天整個spring security實現的東西似乎和我自己的那種介面思想沒什麼區別。現在有新專案了,到底要不要系統學習spring security,是我理解太膚淺?

Spring Security就是個垃圾框架

這觀點完全正確,因為他把所有擴充套件完全用介面概念去做,僅適合中小型專案。

對稍大專案,要求多端登入,裝置標識等特殊需求實現起來異常複雜。一旦要變更,其給的介面根本無法滿足企業需求。

shrio才是好框架,雖簡單,但對經驗豐富的程式設計師僅需2~3天就可實現所有spring security功能,且擴充套件性更強。

我為了學spring security花了一個月時間才掌握所有知識點,但概念太多,幾個月後讓我改登入,直接懵了。相信我,任何一個程式設計師面對spring security更新,加上隔幾個月或半年之後,大部分人都懵逼,因為原有的介面不能用了。

而shrio則不同,介面實現幾乎無變化,但是要求必須精通jwt和oauth協議。精通這兩個協議,最多一週而且就算過幾年,改登入需求,依然可以快速上手。

那些說spring security好的,大部分都是搞培訓或裝13,不要相信。

Sa-token也很香

之前粗略看spring security,沒太看懂,sa-token跟著官方文件給專案里加了下,感覺真的簡單,還能實現token自動續期的問題,太香!

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章