Back-end
[🫥 오류 해결] WebSecurityConfigurerAdapter, authorizeRequest() deprecated
Kamea
2023. 1. 7. 16:09
Spring Security 공부를 하다가 오류가 발생했다.
강의에서는 잘 되던 인터페이스 상속이 되지 않는 문제...
찾아보니 이제 지원이 안되고 @Bean 으로 생성해서 써야 한다고 한다.
@Configuration
@EnableWebSecurity
public class SecurityConfig{
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/user/**").authenticated()
.antMatchers("/manager/**").access("hasAnyRole('ROLE_MANAGER','ROLE_ADMIN')")
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().permitAll();
return http.build();
}
}
위와 같이 생성을 해서 강사님과 맞게 바꿨지만
HttpSecurity가 authorizeRequests()를 deprecate 해서 생긴 문제...
다음 코드를 사용해 해결했다.
@Configuration
@EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록이 됨
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeHttpRequests()
.requestMatchers("/user/**").authenticated()
.requestMatchers("/manager/**").hasAnyRole("MANAGER", "ADMIN")
.requestMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().permitAll()
.and().formLogin().loginPage("/login");
return http.build();
}
}
👇🏻 정리해 보면 아래와 같다.
.authorizeRequests() → .authorizeHttpRequests()
.antMatchers() → .requestMatchers()
.access("hasAnyRole('ROLE_A','ROLE_B')") → .hasAnyRole("A", "B")
이제 잘 작동된다~~