Shiro和SpringSecurity都是安全框架,簡單說是對訪問權限進行控制,他們都提供了認證、授權、加密、會話管理;這里要提一句,通常這種安全框架不會去幫助我們維護用戶/權限;這些需要我們自己去實現,然后通過相應的接口注入給安全框架。
那么SpringBoot項目的話,是使用Shiro還是SpringSecurity呢?還是先看看兩者有什么區別和各自的優缺點:
Shiro的配置和使用比較簡單,SpringSecurity上手復雜些;
Shiro依賴性低,理論上不需要任何框架和容器,可以獨立運行(但是最常用的環境還是JavaEE);SpringSecurity依賴Spring容器;
Shiro支持Web項目和非Web項目;在集群環境中,Shiro可以獨立于容器;
SpringSecurity基于Spring開發,項目若使用Spring(包括SpringBoot)作為基礎,配合SpringSecurity做權限更加方便;Shiro需要和Spring進行整合(不過這個復雜程度可以忽略);
SpringSecurity對Oauth、OpenID也有支持,Shiro則需要自己手動實現。
總結一下,SpringBoot使用Shiro還是SpringSecurity,我更傾向于Shiro。
一方面雖然Shiro需要和SpringBoot做整合,但是這個過程不復雜;
另外一方面Oauth、OpenID站點間統一登錄功能,會有更好的實現方案,很少在這個層級實現,所以SpringSecurity的這兩個功能可以不考慮。