首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Apache Shiro 核心架構與功能特性全解析

     編輯:Java 綜合教學

Shiro 是什麼?

Apache Shiro 是一個強大、靈活的開源安全框架,以簡潔 API 處理四大核心安全領域:

  • Authentication(身份認證):驗證用戶身份(登入)
  • Authorization(授權):基於角色/權限控管資源存取
  • Session Management(會話管理):獨立於 Web/EJB 容器的會話抽象
  • Cryptography(加密):提供加密、解密、雜湊、隨機數等工具

設計目標:易上手、易理解,讓安全不再複雜。適用範圍從命令列工具到企業級應用。

架構核心組件

Shiro 架構圖

  • Subject:當前執行主體(用戶/程式),安全操作的入口
  • SecurityManager:核心大腦,協調所有安全組件
  • Realm:安全數據源適配器(JDBC、LDAP、Ini、自定義),負責認證/授權數據獲取
  • Authenticator / Authorizer:認證/授權核心邏輯
  • SessionManager / CacheManager:會話與快取抽象
  • Cryptography:加密工具集

關鍵特性詳解

Web 整合

提供 ShiroFilter、JSP 標籤庫、Thymeleaf 整合,支援 URL 級權限控制、登入登出流程。

快取支援

整合 Ehcache、Redis 等,緩存認證/授權結果,大幅降低 Realm 壓力。

並發安全

線程安全設計,支援多線程環境下的 Subject 綁定與切換。

測試友好

核心組件基於介面設計,易於 Mock 與單元測試。

「Run As」與「Remember Me」

  • Run As:允許管理員臨時以其他身份執行操作,審計追蹤友好
  • Remember Me:跨會話記住用戶,僅在強制認證時要求登入

快速上手流程

  1. 定義 Realm 實作 doGetAuthenticationInfo()、doGetAuthorizationInfo()
  2. 配置 SecurityManager 注入 Realm、快取、會話管理器
  3. Web 環境註冊 ShiroFilter,定義 filterChainDefinitions(如 /admin/** = authc, roles[admin])
  4. 代碼中:Subject subject = SecurityUtils.getSubject(); subject.login(token); subject.checkRole("admin");

Shiro 以「簡單即強大」為哲學,是 Java 安全領域的經典選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved