diff --git a/src/main/java/company/specialsource/config/WebMvcConfig.java b/src/main/java/company/specialsource/config/WebMvcConfig.java index 123bdaf..f9d0a2f 100644 --- a/src/main/java/company/specialsource/config/WebMvcConfig.java +++ b/src/main/java/company/specialsource/config/WebMvcConfig.java @@ -1,20 +1,28 @@ package company.specialsource.config; -import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.web.SecurityFilterChain; @Configuration -@RequiredArgsConstructor -public class WebMvcConfig implements WebMvcConfigurer { +@EnableWebSecurity +public class WebMvcConfig { - private final VisitorInterceptor visitorInterceptor; + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http + // 1. ๐ŸŸข ์™ธ๋ถ€ ๋งคํฌ๋กœ์˜ POST ์š”์ฒญ์ด ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก CSRF ๋ณดํ˜ธ ๋Œ€์ƒ์—์„œ ์—…๋กœ๋“œ API๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. + .csrf(csrf -> csrf + .ignoringRequestMatchers("/api/sync/upload") + ) + // 2. ๐ŸŸข ๋กœ๊ทธ์ธ์ด๋‚˜ ๋ณ„๋„์˜ ์ธ์ฆ ํ† ํฐ ์—†์ด๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. + .authorizeHttpRequests(auth -> auth + .requestMatchers("/api/sync/upload").permitAll() + .anyRequest().authenticated() + ); - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(visitorInterceptor) - .addPathPatterns("/api/**") // ๐ŸŸข ๋ชจ๋“  API ์ฃผ์†Œ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ธธ๋ชฉ์„ ์ฐจ๋‹จํ•˜์—ฌ ๊ฐ์‹œ - .excludePathPatterns("/api/analytics/**", "/static/**", "/favicon.ico"); // ํ†ต๊ณ„ ์กฐํšŒ API ์ž์ฒด๋Š” ์ค‘๋ณต ์นด์šดํŒ… ์ฐจ๋‹จ + return http.build(); } } \ No newline at end of file