spring Security配置攔截規(guī)則小結(jié)
問題描述
使用spring Security實現(xiàn)后臺管理系統(tǒng)登錄驗證加攔截,訪問圖片即靜態(tài)資源時響應需要登錄驗證,分析問題得出結(jié)論未配置security的攔截規(guī)則,沒有對靜態(tài)資源進行登錄放行
解決方案:
配置spring Security攔截規(guī)則,將訪問路徑添加進入白名單中,比如博主將resources下files下的圖片設置白名單,規(guī)則就是"/files/**",以下就是博主的配置
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/files/**").permitAll()// 配置攔截規(guī)則
.anyRequest().authenticated();
}
}
有關(guān)spring security的配置器相關(guān)規(guī)則
http.authorizeRequests().antMatchers("/api/**").denyAll(); //拒絕api路徑下所有的訪問
http.authorizeRequests().antMatchers("/api/**").authenticated(); //api路徑下訪問需認證通過
http.authorizeRequests().antMatchers("/api/**").permitAll(); //api路徑下無條件允許訪問
端點保護配置
了解到這部分的知識是因為在做OAuth2認證的時候,我發(fā)現(xiàn)項目中的安全配置已經(jīng)開放所有請求(即/**請求不進行攔截),但是當我訪問/oauth/token的時候竟然提示401,百思不得其解。最后發(fā)現(xiàn)原來在Spring Security中預制了一些默認斷點保護策略。具體配置是在AuthorizationServerSecurityConfiguration中
過濾規(guī)則踩到的坑
.requestMatchers().antMatchers("/test/**").and()
.authorizeRequests().antMatchers("/test/authenticated").authenticated()
.anyRequest().permitAll().and()
通過匹配規(guī)則我們可以知道這部分配置的意思是針對/test/**的請求將使用安全配置,/test/authenticated是需要認證的,匹配/test/**且不是/test/authenticated的請求是不需要認證的。但是在實際項目中卻遇到了一個坑,就是我訪問/test/**的任何請求都是需要認證的,跟了源碼發(fā)現(xiàn)是使用錯誤,具體原因是因為我在繼承WebSecurityConfigurerAdapter重寫configure(HttpSecurity http)方法的最后多寫了一行代碼
super.configure(http);
我在最后又去調(diào)用了WebSecurityConfigurerAdapter的configure(HttpSecurity http)方法
protected void configure(HttpSecurity http) throws Exception {
logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
http
.authorizeRequests().anyRequest().authenticated().and()
.formLogin().and()
.httpBasic();
}
這個是WebSecurityConfigurerAdapter.configure方法的源碼,它默認會對所有請求進行過濾。有興趣的同學可以跟蹤源碼會發(fā)現(xiàn)Spring Security對URL攔截規(guī)則最后是存放在Map中,即在super的配置會覆蓋掉自定義配置導致自定義配置失效,寫的比較簡潔可能不是很好理解。
到此這篇關(guān)于spring Security配置攔截規(guī)則小結(jié)的文章就介紹到這了,更多相關(guān)spring Security 攔截規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringSecurity自定義資源攔截規(guī)則及登錄界面跳轉(zhuǎn)問題
- SpringSecurity攔截器鏈的使用詳解
- springsecurity實現(xiàn)攔截器的使用示例
- SpringBoot整合SpringSecurity實現(xiàn)認證攔截的教程
- Swagger2不被SpringSecurity框架攔截的配置及說明
- Spring Boot security 默認攔截靜態(tài)資源的解決方法
- SpringSecurity實現(xiàn)動態(tài)url攔截(基于rbac模型)
- Spring Security攔截器引起Java CORS跨域失敗的問題及解決
- SpringBoot+SpringSecurity 不攔截靜態(tài)資源的實現(xiàn)
- 淺談Spring Security 對于靜態(tài)資源的攔截與放行
相關(guān)文章
透明化Sharding-JDBC數(shù)據(jù)庫字段加解密方案
這篇文章主要為大家介紹了透明化Sharding-JDBC數(shù)據(jù)庫字段加解密方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-02-02
Java實現(xiàn)的簡單字符串反轉(zhuǎn)操作示例
這篇文章主要介紹了Java實現(xiàn)的簡單字符串反轉(zhuǎn)操作,結(jié)合實例形式分別描述了java遍歷逆序輸出以及使用StringBuffer類的reverse()方法兩種字符串反轉(zhuǎn)操作技巧,需要的朋友可以參考下2018-08-08
mybatis實現(xiàn)表與對象的關(guān)聯(lián)關(guān)系_動力節(jié)點Java學院整理
這篇文章主要介紹了mybatis實現(xiàn)表與對象的關(guān)聯(lián)關(guān)系_動力節(jié)點Java學院整理,需要的朋友可以參考下2017-09-09
Java 8 Stream 的終極技巧——Collectors 功能與操作方法詳解
這篇文章主要介紹了Java 8 Stream Collectors 功能與操作方法,結(jié)合實例形式詳細分析了Java 8 Stream Collectors 功能、操作方法及相關(guān)注意事項,需要的朋友可以參考下2020-05-05

