0. 概述
以前我們配置 SpringSecurity 的方式是繼承 WebSecurityConfigurerAdapter
,然后重寫其中的幾個方法:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//配置 Spring Security 中的過濾器鏈
@Override
void configure(HttpSecurity http) {}
//配置路徑放行規(guī)則
@Override
void configure(WebSecurity web) {}
//配置本地認證管理器
@Override
void configure(AuthenticationManagerBuilder auth) {}
//配置全局認證管理器
@Override
AuthenticationManager authenticationManagerBean() {}
}
目前這個類已經(jīng)過期,雖然可以繼續(xù)使用,但是總覺得別扭。那么它的替代方案是什么?下面我來為大家一一介紹。
1. HttpSecurity
原寫法:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests(authorize - > authorize
.anyRequest().authenticated()
);
}
新寫法:
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.antMatcher("/**")
.authorizeRequests(authorize - > authorize
.anyRequest().authenticated()
)
.build();
}
2. WebSecurity
原寫法:
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/ignore1", "/ignore2");
}
新寫法:
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) - > web.ignoring().antMatchers("/ignore1", "/ignore2");
}
WebSecurity配置不常使用,如果需要忽略Url,推薦通過
HttpSecurity.authorizeHttpRequests
的permitAll
來實現(xiàn)。
3. AuthenticationManager
原寫法:
@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
//Local
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
//Global
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
新寫法:
@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
//Local
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) - > authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults())
.authenticationManager(new CustomAuthenticationManager());
}
//Global
@Bean
public AuthenticationManager authenticationManager(HttpSecurity httpSecurity) throws Exception {
return httpSecurity.getSharedObject(AuthenticationManagerBuilder.class)
.userDetailsService(userDetailsService)
.passwordEncoder(bCryptPasswordEncoder())
.and()
.build();
}
4. 心得
技術(shù)是不斷迭代的,我們作為技術(shù)人員,不能墨守成規(guī),要學會擁抱變化。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
spring
+關(guān)注
關(guān)注
0文章
340瀏覽量
14343 -
過濾器
+關(guān)注
關(guān)注
1文章
429瀏覽量
19613 -
Spring Security
+關(guān)注
關(guān)注
0文章
2瀏覽量
5459
發(fā)布評論請先 登錄
相關(guān)推薦
java spring教程
java spring教程理解Spring 實現(xiàn)原理掌握Spring IOC,AOP掌握Spring的基礎(chǔ)配置和用法熟練使用SSH開發(fā)項目
發(fā)表于 09-11 11:09
什么是java spring
的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring是一個容器,它包含并且管理系統(tǒng)對象的生命周期和
發(fā)表于 09-11 11:16
MVC框架實例—Spring MVC配置
本文旨在讓您在使用Spring MVC框架配置完成日常工作的時候更加輕松。根據(jù)Spring MVC框架配置,為基于本技術(shù)開發(fā)的項目提供一系列的解決方案。
發(fā)表于 12-14 17:37
?3174次閱讀
基于Spring Security安全框架的聯(lián)通資源管理系統(tǒng)安全分析
基于為聯(lián)通資源管系統(tǒng)提供一個方便可靠的安全框架的目的,采用面向切面編程(AOP)的Spring Security安全框架,結(jié)合了Spring框架提供的控制反轉(zhuǎn)技術(shù),最終創(chuàng)建了一個功能強大、安全可
發(fā)表于 05-14 11:56
?0次下載
Spring應(yīng)用 1 springXML配置說明
Spring應(yīng)用 1 springXML配置說明 隱式對Spring容器注冊Process ? context:annotation-config / 為了在spring開發(fā)過程中,為
發(fā)表于 01-13 12:20
?389次閱讀
spring配置方式詳細介紹
SH框架風靡整個IT行業(yè),而作為該框架中的管理員,Spring負責管理其他的框架,協(xié)調(diào)各個部分的工作。那么今天小編就帶大家一起學習Spring的配置方法。
發(fā)表于 01-28 10:53
?1427次閱讀
微服務(wù)配置中心實戰(zhàn):Spring + MyBatis + Druid + Nacos
在 結(jié)合場景談服務(wù)發(fā)現(xiàn)和配置 中我們講述了 Nacos 配置中心的三個典型的應(yīng)用場景,包括如何在 Spring Boot 中使用 Nacos 配置中心將數(shù)據(jù)庫連接信息管控起來,而在“原
發(fā)表于 12-29 17:09
?1104次閱讀
「Spring認證」Spring IoC 容器
Spring 容器是 Spring 框架的核心容器將創(chuàng)建對象,將它們連接到配置中,并管理它們從創(chuàng)建到成熟的生命周期。Spring 容器使用 DI 來管理構(gòu)建應(yīng)用程序的組件。
為什么使用spring-authorization-server?
官方原因:原先使用Spring Security OAuth,而該項目已經(jīng)逐漸被淘汰,雖然網(wǎng)上還是有不少該方案,但秉著技術(shù)要隨時代更新,從而使用spring-authorization-server
Spring Boot 3.1 中如何整合Spring Security和Keycloak
雖然Keycloak 團隊宣布了不再對Spring Security提供適配,但Spring Security長期以來一直為OAuth和OIDC提供強大的內(nèi)置支持。所以,只要我們理解
Spring Boot配置加載相關(guān)知識
有: --server.port:指定應(yīng)用程序的端口號。 --spring.profiles.active:設(shè)置應(yīng)用程序使用的配置文件中的環(huán)境配置。 --spring.config.a
評論