網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1、Shiro
????????Shiro是一個(gè)強(qiáng)大而靈活的開源安全框架,能夠非常清晰的處理認(rèn)證、授權(quán)、管理會(huì)話以及密碼加密。
????????Shiro四大核心功能:Authentication,Authorization,Cryptography,Session Management?
?
?
Shiro三個(gè)核心組件:Subject, SecurityManager 和 Realms.
? ? ? ? Subject:主體,可以看到主體可以是任何可以與應(yīng)用交互的 “用戶”;
? ? ? ? SecurityManager:相當(dāng)于 SpringMVC 中的 DispatcherServlet 或者 Struts2 中的 FilterDispatcher;是 Shiro 的心臟;所有具體的交互都通過 SecurityManager 進(jìn)行控制;它管理著所有 Subject、且負(fù)責(zé)進(jìn)行認(rèn)證和授權(quán)、及會(huì)話、緩存的管理。
? ? ? ? Realm:域,Shiro從Realm獲取安全數(shù)據(jù)(如用戶、角色、權(quán)限),就是說SecurityManager要驗(yàn)證用戶身份,那么它需要從Realm獲取相應(yīng)的用戶進(jìn)行比較以確定用戶身份是否合法;也需要從Realm得到用戶相應(yīng)的角色/權(quán)限進(jìn)行驗(yàn)證用戶是否能進(jìn)行操作;可以把Realm看成DataSource,即安全數(shù)據(jù)源。
?
2、Spring Security
? ? ? ? 是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring IOC,DI(控制反轉(zhuǎn)Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問控制功能,減少了為企業(yè)系統(tǒng)安全控制編寫大量重復(fù)代碼的工作。
?Spring Security一般流程:
? ? ? ? ①當(dāng)用戶登錄時(shí),前端將用戶輸入的用戶名、密碼信息傳輸?shù)胶笈_(tái),后臺(tái)用一個(gè)類對(duì)象將其封裝起來(lái),通常使用的是UsernamePasswordAuthenticationToken這個(gè)類。
? ? ? ? ②程序負(fù)責(zé)驗(yàn)證這個(gè)類對(duì)象。驗(yàn)證方法是調(diào)用Service根據(jù)username從數(shù)據(jù)庫(kù)中取用戶信息到實(shí)體類的實(shí)例中,比較兩者的密碼,如果密碼正確就成功登陸,同時(shí)把包含著用戶的用戶名、密碼、所具有的權(quán)限等信息的類對(duì)象放到SecurityContextHolder(安全上下文容器,類似Session)中去。
? ? ? ? ③用戶訪問一個(gè)資源的時(shí)候,首先判斷是否是受限資源。如果是的話還要判斷當(dāng)前是否未登錄,沒有的話就跳到登錄頁(yè)面。
? ? ? ? ④如果用戶已經(jīng)登錄,訪問一個(gè)受限資源的時(shí)候,程序要根據(jù)url去數(shù)據(jù)庫(kù)中取出該資源所對(duì)應(yīng)的所有可以訪問的角色,然后拿著當(dāng)前用戶的所有角色一一對(duì)比,判斷用戶是否可以訪問。
3、 Spring Security和Shiro區(qū)別
相同點(diǎn)
? ? ? ? ①、認(rèn)證功能
? ? ? ? ②、授權(quán)功能
? ? ? ? ③、加密功能
? ? ? ? ④、會(huì)話管理
? ? ? ? ⑤、緩存支持
? ? ? ? ⑥、rememberMe功能
不同點(diǎn):
? ? ? ? 1、Spring Security 基于Spring 開發(fā),項(xiàng)目若使用 Spring 作為基礎(chǔ),配合 Spring Security 做權(quán)限更加方便,而 Shiro 需要和 Spring 進(jìn)行整合開發(fā);
? ? ? ? 2、Spring Security 功能比 Shiro 更加豐富些,例如安全維護(hù)方面;
? ? ? ? 3、Spring Security 社區(qū)資源相對(duì)比 Shiro 更加豐富;
? ? ? ? 4、Shiro 的配置和使用比較簡(jiǎn)單,Spring Security 上手復(fù)雜些;
? ? ? ? 5、Shiro 依賴性低,不需要任何框架和容器,可以獨(dú)立運(yùn)行.Spring Security 依賴Spring容器;
? ? ? ? 6、shiro 不僅僅可以使用在web中,它可以工作在任何應(yīng)用環(huán)境中。在集群會(huì)話時(shí)Shiro最重要的一個(gè)好處或許就是它的會(huì)話是獨(dú)立于容器的。
?
安全框架Shiro和SpringSecurity的比較 - hanease - 博客園?
原文鏈接:https://blog.csdn.net/weixin_67588007/article/details/126692945
相關(guān)推薦
- 2022-07-26 Python標(biāo)準(zhǔn)庫(kù)之日期、時(shí)間和日歷模塊_python
- 2022-06-12 C語(yǔ)言?詳細(xì)解析時(shí)間復(fù)雜度與空間復(fù)雜度_C 語(yǔ)言
- 2023-07-07 TP6在composer包里寫控制器
- 2022-07-26 react如何添加less環(huán)境配置_React
- 2022-11-02 kotlin協(xié)程之coroutineScope函數(shù)使用詳解_Android
- 2022-08-26 docker搭建memcached的詳細(xì)步驟_docker
- 2022-12-27 Go學(xué)習(xí)筆記之map的聲明和初始化_Golang
- 2023-03-27 詳解如何在React中優(yōu)雅的使用addEventListener_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支