目錄
📫 一、前言提要簡介
🛡? 二、核心功能介紹
?? 三、核心架構組件
? 四、與Java的關系
?? 五、與Spring Security對比
🧩 六、典型應用場景
💎 七、總結歸納概述
📫 一、前言提要簡介
? ? ? ?Apache Shiro 是一個強大且易用的Java 安全框架??,由 Apache 軟件基金會維護,專為 Java 平臺設計,提供全面的安全管理功能。
🛡? 二、核心功能介紹
1.??身份認證(Authentication)??
驗證用戶身份(如登錄校驗),支持多種方式:用戶名密碼、LDAP、Active Directory、JWT 等。
2.??授權(Authorization)??
控制用戶訪問權限,支持??基于角色??(RBAC)和??基于資源??的細粒度權限控制(例如校驗用戶能否刪除訂單)。
??3.會話管理(Session Management)??
統一管理用戶會話,適用于 Web 和非 Web 環境(如命令行應用),支持分布式會話存儲(如 Redis)。
??4.加密(Cryptography)??
內置加密工具(如 MD5、SHA 散列、AES 加密),保障敏感數據(如密碼)的安全存儲。
5.??其他輔助功能??
-
??緩存機制??:緩存用戶權限信息,提升性能。
-
??“記住我”??:支持用戶免重復登錄。
-
??Web 集成??:通過過濾器(如
authc
、perms
)攔截請求,實現 URL 級安全控制。
?? 三、核心架構組件
Shiro 通過三層組件協同工作:
1.??Subject??
代表當前操作用戶(人或系統),開發者通過 Subject
API 直接調用登錄、授權等方法。
2.??SecurityManager??
??核心控制器??(類似 Spring MVC 的 DispatcherServlet
),管理所有安全操作(認證、授權、會話),并調度其他組件。
3.??Realm??
??安全數據源橋梁??,連接應用數據(如數據庫、LDAP)。開發者需自定義 Realm
,提供用戶信息及權限數據。
// 示例:自定義Realm 實現認證與授權邏輯
public class CustomRealm extends AuthorizingRealm {@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) {// 認證邏輯(校驗用戶名密碼)}@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {// 授權邏輯(加載用戶權限)}
}
? 四、與Java的關系
1.??Java 原生支持??
完全基于 Java 開發,無縫運行于 ??Java SE?? 和 ??Java EE?? 環境,獨立于容器(如 Tomcat)和框架(如 Spring)。
??2.廣泛集成能力??
兼容主流 Java 生態:Spring/Spring Boot、JPA、MyBatis、Thymeleaf 等。
3.??跨場景適用??
支持 Web 應用、微服務、單點登錄(SSO)、RESTful API 及后臺服務。
?? 五、與Spring Security對比
特性 | Shiro | Spring Security |
---|---|---|
??易用性?? | ? 設計簡潔,API 直觀 | ? 配置復雜,學習曲線陡峭 |
??靈活性?? | ? 獨立運行,不依賴 Spring | ? 深度綁定 Spring 生態 |
??功能覆蓋?? | 覆蓋核心安全需求 | 更豐富(如 OAuth2 原生支持) |
??適用場景?? | 輕量級應用、快速集成 | 大型 Spring 項目、復雜權限管理 |
💡 ??結論??:Shiro 適合追求??快速實現、輕量集成??的 Java 項目;Spring Security 更適合深度依賴 Spring 生態的復雜系統。
🧩 六、典型應用場景
1.??Web 應用權限控制??
通過 URL 攔截(如 /admin/**=roles[admin]
)管理頁面訪問權限。
2.??API 安全??
為 RESTful 服務提供 Token 認證(如 JWT)和接口級授權。
3.??單點登錄(SSO)??
統一多系統登錄態,減少重復認證。
4.??數據加密??
敏感數據(如密碼)散列存儲,防止泄露。
💎 七、總結歸納概述
? ? ? ?Apache Shiro 作為 ??Java 安全領域的輕量級解決方案??,以簡潔的 API、靈活的擴展性和低耦合度,成為快速構建安全系統的優選。其與 Java 的深度整合及跨環境適配能力,尤其適合中小型項目或需脫離 Spring 生態的場景。對于復雜權限需求,可結合 Spring Security 或 OAuth2 擴展。