SpringSecurity/해커톤

WebSecurityConfigurerAdapter->SecurityFilterChain

브리오 2024. 8. 17. 13:10
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/", "/login**", "/error**").permitAll()
                .antMatchers("/api/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .oauth2Login()
                .userInfoEndpoint()
                .userService(customOAuth2UserService);
    }

    @Autowired
    private CustomOAuth2UserService customOAuth2UserService;
}

 

>>>>>>>>>>>>>>>

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    private final CustomOAuth2UserService customOAuth2UserService;

    public SecurityConfig(CustomOAuth2UserService customOAuth2UserService) {
        this.customOAuth2UserService = customOAuth2UserService;
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(authorize -> authorize
                .requestMatchers("/", "/login**", "/error**").permitAll()
                .requestMatchers("/api/**").permitAll()
                .anyRequest().authenticated()
            )
            .oauth2Login(oauth2 -> oauth2
                .userInfoEndpoint(userInfo -> userInfo
                    .userService(customOAuth2UserService)
                )
            );

        return http.build();
    }
}

 

  • WebSecurityConfigurerAdapter를 상속하는 대신 일반 클래스를 사용합니다.
  • @Autowired 대신 생성자 주입을 사용합니다.
  • configure 메서드 대신 SecurityFilterChain 빈을 정의합니다.
  • authorizeRequests()가 authorizeHttpRequests()로 변경되었습니다.
  • antMatchers()가 requestMatchers()로 변경되었습니다.
  • 람다식을 사용하여 더 명확하고 읽기 쉬운 구성을 제공합니다.