日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

spring security源码分析之core包

發(fā)布時(shí)間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring security源码分析之core包 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉(zhuǎn)Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制功能,減少了為企業(yè)系統(tǒng)安全控制編寫(xiě)大量重復(fù)代碼的工作。[1]

1. core模塊

? ?認(rèn)證Authentication代表了認(rèn)證請(qǐng)求的token或者Authenticationmanager的authenticate方法處理的認(rèn)證principal。一旦請(qǐng)求認(rèn)證通過(guò),SecurityContextHolder將Authentication保存到SecurityContext中。下面我們看一下Authentication的繼承關(guān)系:

userDetails

context包:

  Authentication存放在SecurityContext中。SecurityContextHolder將特定SecurityContext和當(dāng)前執(zhí)行線程聯(lián)系到一起。此類(lèi)提供了一些列靜態(tài)方法來(lái)代理SecurityContextHoderStrategy實(shí)例。這個(gè)類(lèi)的設(shè)計(jì)目的是使用便利方法為指定的jvm指明策略。有三種策略:MODE_GLOBAL、MODE_THREADLOCAL、MODE_INHERITABLETHREADLOCAL。分別對(duì)應(yīng):GlobalSecurityContextHolderStrategy、ThreadLocalSecurityContextHolderStrategy、InheritableThreadLocalSecurityContextHolderStrategy。

兩種方法可以設(shè)置這些 策略。第一在系統(tǒng)屬性中設(shè)置;第二是在使用前調(diào)用setStrategeName設(shè)置。如果上述方式都沒(méi)有使用,默認(rèn)情況下使用MODE_THREADLOCAL,MODE_THREADLOCAL是向后兼容的。

grantedAuthority

2.authentication模塊

authenticationManager跟蹤:

? ?

了解一下authentication的處理抽象接口AuthenticationProvider,它的集成層次關(guān)系

?

3. 授權(quán)模塊

決策管理器Voter

小結(jié):

Spring Security對(duì)Web安全性的支持大量地依賴于Servlet過(guò)濾器。這些過(guò)濾器攔截進(jìn)入請(qǐng)求,并且在應(yīng)用程序處理該請(qǐng)求之前進(jìn)行某些安全處理。 Spring Security提供有若干個(gè)過(guò)濾器,它們能夠攔截Servlet請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)給認(rèn)證和訪問(wèn)決策管理器處理,從而增強(qiáng)安全性。根據(jù)自己的需要,可以使用表7.4中所列的幾個(gè)過(guò)濾器來(lái)保護(hù)自己的應(yīng)用程序。 如果使用過(guò)Servlet過(guò)濾器,那么知道要讓它們生效,就必須在Web應(yīng)用程序的web.xml文件中使用<filter> 和<filter-mapping>元素配置它們。雖然這樣做能起作用,但是它并不適用于使用依賴注入進(jìn)行的配置。 FilterToBeanProxy是一個(gè)特殊的Servlet過(guò)濾器,它本身做的工作并不多,而是將自己的工作委托給Spring應(yīng)用程序上下文 中的一個(gè)Bean來(lái)完成。被委托的Bean幾乎和其他的Servlet過(guò)濾器一樣,實(shí)現(xiàn)javax.servlet.Filter接 口,但它是在Spring配置文件而不是web.xml文件中配置的。 實(shí)際上,FilterToBeanProxy代理給的那個(gè)Bean可以是javax.servlet.Filter的任意實(shí)現(xiàn)。這可以是 Spring Security的任何一個(gè)過(guò)濾器,或者它可以是自己創(chuàng)建的一個(gè)過(guò)濾器。但是正如本書(shū)已經(jīng)提到的那樣,Spring Security要求至少配置四個(gè)而且可能一打或者更多的過(guò)濾器。[2]?

參考文獻(xiàn):

[1]http://baike.baidu.com/link?url=hpt7PSOWpcOzJWxE75_H0WF8N2iXKpDAjGNQrDFsPkoDlyhNEE1lparIWzTsGV2-AyP3StHUXWesb2SCWc0SKK

?

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/4546292.html

總結(jié)

以上是生活随笔為你收集整理的spring security源码分析之core包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。