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")

 

 

 

 

이제 잘 작동된다~~