WebSecurityConfigurerAdapter 대체 하기

2023. 5. 30. 17:25스프링부트

WebSecurityConfigurerAdapter는 스프링 시큐리티를 사용할 때 기본적인 시큐리티 설정을 위해 사용되었다.

 

WebSecurityConfigurerAdapter라는 추상 클래스를 상속하여 configure 메소드를 오버라이드하여 설정했었다.

 

이제는 bean으로 등록하여 사용한다.

 

<기존 사용법>

@EnableWebSecurity
@Configuration
public class SecurityConfig  extends WebSecurityConfigurerAdapter {
    
	@Bean
	public BCryptPasswordEncoder encodePwd() {
		return new BCryptPasswordEncoder();
	}
    
	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.authorizeRequests()
			.antMatchers("/admin/**").hasRole("ADMIN")
			.antMatchers("/user/**").hasAnyRole("ADMIN, USER")
			.anyRequest().permitAll()
		.and()
			.formLogin()
			.loginPage("/")
			.loginProcessingUrl("/login")
		.and()
			.logout()
			.logoutSuccessUrl("/myPage")
		;
		
	}
}

 

<변경된 사용법>

@EnableWebSecurity
@Configuration
public class SecurityConfig {
	
	@Bean
	public BCryptPasswordEncoder encodePwd() {
		return new BCryptPasswordEncoder();
	}
	
	@Bean
	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
		http.authorizeRequests()
			.antMatchers("/admin/**").hasRole("ADMIN")
			.antMatchers("/user/**").hasAnyRole("ADMIN, USER")
			.anyRequest().permitAll()
		.and()
			.formLogin()
			.loginPage("/")
			.loginProcessingUrl("/login")
		.and()
			.logout()
			.logoutSuccessUrl("/myPage");
		return http.build();
	}

}

- 클래스 생성시 WebSecurityConfigurerAdapter 를 상속하지않고 생성

- 이제는 Override하는 대신 Bean으로 등록해서 SecurityFilterChain을 사용하고

   http.build()를  return 해주면 된다

'스프링부트' 카테고리의 다른 글

데이터 바인딩 양방향 단방향 바인딩 설명  (0) 2024.04.04