diff --git a/src/main/java/workplate/workplateserver/config/CorsConfig.java b/src/main/java/workplate/workplateserver/config/CorsConfig.java new file mode 100644 index 0000000..605284e --- /dev/null +++ b/src/main/java/workplate/workplateserver/config/CorsConfig.java @@ -0,0 +1,32 @@ +package workplate.workplateserver.config; + +import java.util.List; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +/** + * CORS 설정 + * + * @author : parkjihyeok + * @since : 2024/11/19 + */ +@Configuration +public class CorsConfig { + + @Bean + public CorsConfigurationSource corsConfigurationSource() { + CorsConfiguration configuration = new CorsConfiguration(); + configuration.setAllowedOriginPatterns(List.of("*")); // 모든 도메인 허용 + configuration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); + configuration.setAllowedHeaders(List.of("*")); // 모든 헤더 허용 + configuration.setAllowCredentials(true); // 자격 증명 허용 + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + return source; + } +} diff --git a/src/main/java/workplate/workplateserver/config/SecurityConfig.java b/src/main/java/workplate/workplateserver/config/SecurityConfig.java index dc081a6..c33c63d 100644 --- a/src/main/java/workplate/workplateserver/config/SecurityConfig.java +++ b/src/main/java/workplate/workplateserver/config/SecurityConfig.java @@ -1,16 +1,15 @@ package workplate.workplateserver.config; -import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; -import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.web.cors.CorsConfigurationSource; import lombok.RequiredArgsConstructor; import workplate.workplateserver.auth.domain.filter.LoginFilter; @@ -31,6 +30,7 @@ public class SecurityConfig { private final AuthenticationConfiguration authenticationConfiguration; private final LoginSuccessHandler loginSuccessHandler; private final JwtFilter jwtFilter; + private final CorsConfigurationSource corsConfigurationSource; @Bean public LoginFilter loginFilter() throws Exception { @@ -50,7 +50,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { ); http .csrf(AbstractHttpConfigurer::disable) - .cors(AbstractHttpConfigurer::disable) + .cors(cors -> cors.configurationSource(corsConfigurationSource)) .formLogin(AbstractHttpConfigurer::disable) .httpBasic(AbstractHttpConfigurer::disable) .addFilterAt(loginFilter(), UsernamePasswordAuthenticationFilter.class) // 로그인 필터 변경