Java學習第八十一部分——Shiro

目錄

📫 一、前言提要簡介

🛡? 二、核心功能介紹

?? 三、核心架構組件

? 四、與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 集成??:通過過濾器(如 authcperms)攔截請求,實現 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對比

特性ShiroSpring 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 擴展。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916467.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916467.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

虛擬機ubuntu20.04共享安裝文件夾

ubuntu20.04共享安裝文件夾 4.5 共享安裝文件夾 將Windows存放安裝文件的文件夾共享給虛擬機,如下圖操作:如果是在ubuntu20.04中,還需要以下的操作: sudo mkdir /mnt/hgfs 此命令無效 sudo echo ‘vmhgfs-fuse /mnt/hgfs fu…

如何查看電腦后門IP和流量?

你是否也有以下經歷?深夜,你的電腦風扇突然狂轉,屏幕卻一片寂靜;每月流量莫名超標,賬單高得離譜;鼠標偶爾不聽使喚…這些可能不是電腦“鬧脾氣”,如何一探究竟? 想象一下&#xff1a…

分類預測 | MATLAB基于四種先進的優化策略改進蜣螂優化算法(IDBO)的SVM多分類預測

分類預測 | MATLAB基于四種先進的優化策略改進蜣螂優化算法(IDBO)的SVM多分類預測 目錄分類預測 | MATLAB基于四種先進的優化策略改進蜣螂優化算法(IDBO)的SVM多分類預測分類效果基本介紹多策略量子自適應螺旋搜索算法研究摘要1. 引言1.1 研究背景1.2 研究意義1.3 研究目標2. 文…

Android 修改系統時間源碼閱讀

鏈接:XRefAndroid - Support Android 16.0 & OpenHarmony 5.0 (AndroidXRef/AospXRef) 這里看的Android 10的代碼,選中Android 10,勾選所有工程,搜索DateTimeSettings?: 看到showTimePicker應該是顯示一個設置時…

關于自定義域和 GitHub Pages(Windows)

GitHub Pages 支持使用自定義域,或將站點 URL 的根目錄從默認值(例如 )更改為您擁有的任何域,比如octocat.github.io。 誰可以使用此功能? GitHub Pages 在公共存儲庫中提供 GitHub Free 和 GitHub Free for organizations,在公共和私有存儲庫中提供 GitHub Pro、GitHub …

自動駕駛領域中的Python機器學習

數據預處理與特征工程 在自動駕駛系統中,數據是驅動決策的核心。從傳感器(如攝像頭、激光雷達、毫米波雷達)收集的原始數據通常包含噪聲、缺失值和異常值,需要進行系統的預處理。Python的pandas庫提供了強大的數據處理能力&#x…

PROFINET轉CAN通訊協議轉換速通汽車制造

在汽車系統領域之外,控制器局域網(CAN)總線技術亦廣泛應用于多種工業環境。其固有的穩健性、可靠性與靈活性,使其成為工業自動化及控制系統中設備間通信的理想選擇。CAN 總線技術在工業應用中的關鍵領域包括機器控制、傳感器網絡以…

影刀RPA_小紅書筆記批量采集_源碼解讀

一、項目簡介本項目是一個基于影刀RPA的小紅書筆記批量采集工具,能夠通過兩種模式獲取小紅書平臺的軟文數據:搜索內容抓取和自定義鏈接抓取。工具使用Chrome瀏覽器自動化技術,實現了從網頁數據采集、解析到Excel導出的完整流程。支持獲取筆記…

以使命為帆,結業是重新出發的號角

站在私教班結業典禮的講臺上,望著眼前一張張閃爍著力量的面孔,我心中始終縈繞著一個信念:所有的相遇,都是為了共同奔赴一件更有意義的事。今天不是終點,而是 “使命的啟程”—— 我們因不甘而相聚:不甘心行…

java測試題(下)

1. Spring 核心概念1.1 如何理解 Spring DI?DI(依賴注入) 是 IoC(控制反轉) 的具體實現方式,由 Spring 容器在運行時通過以下方式自動注入依賴:構造器注入(推薦)Setter 注…

LC振蕩Multisim仿真

電路圖:說明:點擊仿真后,先打開S1,可以看到C1的充電曲線。當電容充滿電后,關閉S1,打開S2,這時候,C2電容會快速獲得C1一半的電量。如果沒有L,曲線會變得很陡。如果只加入電…

五、Web開發

文章目錄1. SpringMVC自動配置概覽2. 簡單功能分析2.1 靜態資源訪問2.1.1 靜態資源目錄2.1.2 靜態資源訪問前綴2.1.3 webjar2.2 歡迎頁支持2.3 自定義 Favicon2.4 靜態資源配置原理2.4.1 配置類只有一個有參構造器2.4.2 資源處理的默認規則2.4.3 歡迎頁的處理規則2.4.4 favicon…

Mysql 二進制安裝常見問題

1. mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory在centos9中升級了libncurses.so的版本為libncurses.so.6,所以找不到libncurses.so.5需要使用軟連接指向libncurses.so.6ln -s /lib6…

OpenLayers 綜合案例-點位聚合

看過的知識不等于學會。唯有用心總結、系統記錄,并通過溫故知新反復實踐,才能真正掌握一二 作為一名摸爬滾打三年的前端開發,開源社區給了我飯碗,我也將所學的知識體系回饋給大家,助你少走彎路! OpenLayers…

測試老鳥整理,物流項目系統測試+測試點分析(一)

目錄:導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結(尾部小驚喜) 前言 物流項目&#xf…

好的編程語言設計是用簡潔清晰的原語組合復雜功能

首先,函數命名要user friendly,比如最常用的控制臺輸入輸出,input scanf gets read readln readline print println writeline… 我專門詢問了chatgpt,讓它給出流行度百分比最高的組合(ai干這個最在行)&…

基于springboot的在線購票系統/在線售票系統

用戶:注冊,登錄,影院信息,即將上映,電影信息,新聞公告,取票管理,電影評價管理,我的收藏管理,個人中心管理員:登錄,個人中心&#xff0…

Spring Boot項目打包部署常見問題解決方案

問題一:JAR包缺少主清單屬性 問題描述 在使用 java -jar 命令啟動Spring Boot項目時,遇到以下錯誤: demo-service.jar中沒有主清單屬性問題原因 pom.xml 中 spring-boot-maven-plugin 配置不正確打包時跳過了主清單文件的生成主類&#xff08…

【分享】外國使館雷電綜合防護系統改造方案(一)

1防雷項目設計思想:1.1設計依據:依據中國GB標準與部委頒發的設計規范的要求,該建筑物和大樓內之計算機房等設備都必須有完整完善之防護措施,保證該系統能正常運作。這包括電源供電系統、不間斷供電系統,空調設備、電腦…

數據結構預備知識

在學習數據結構之前,有些知識是很有必要提前知道的,它們包括:集合框架、復雜度和泛型。本篇文章專門介紹這三個東西。1.集合框架1.1 什么是集合框架Java 集合框架(Java Collection Framework),又被稱為容器,是定義在 j…