[디버그] 스프링 시큐리티 + CORS
2024. 5. 11. 21:20ㆍ디버그
되는 코드
package com.home.config;
import com.home.enums.role.UserRole;
import com.home.util.jwt.JwtAuthenticationFilter;
import com.home.util.jwt.JwtDtoProvider;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.Customizer;
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.http.SessionCreationPolicy;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig {
private final JwtDtoProvider jwtDtoProvider;
@Bean
public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
return httpSecurity
.httpBasic(AbstractHttpConfigurer::disable)
.csrf(AbstractHttpConfigurer::disable)
// .cors(cors -> cors.configurationSource(corsConfigurationSource))
.cors(Customizer.withDefaults())
.sessionManagement(
session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests(
authorize -> authorize
.requestMatchers("/members/login", "/members/join", "/members/health").permitAll()
// .requestMatchers("/members/health").permitAll()
.requestMatchers("/swagger-ui/**").permitAll()
.requestMatchers("/api-docs/**").permitAll()
.requestMatchers("/members/**").hasAuthority(UserRole.ROLE_USER.getValue())
.requestMatchers(HttpMethod.GET, "/announcements", "/announcements/*").permitAll()
.requestMatchers("/announcements/**").hasAuthority(UserRole.ROLE_ADMIN.getValue())
.requestMatchers("/members/test").hasAuthority(UserRole.ROLE_USER.getValue())
.anyRequest().permitAll()
// .anyRequest().authenticated()
)
.addFilterBefore(new JwtAuthenticationFilter(jwtDtoProvider),
UsernamePasswordAuthenticationFilter.class).build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
// configuration.setAllowedOrigins(Arrays.asList("http://localhost"));
// configuration.setAllowedMethods(Arrays.asList("GET","POST"));
// configuration.setAllowCredentials(true);
configuration.addAllowedHeader("*");
configuration.addAllowedMethod("*");
configuration.addAllowedOrigin("*");
// configuration.setAllowedOrigins(Arrays.asList("*"));
// configuration.setAllowedMethods(Arrays.asList("*"));
// configuration.setAllowedHeaders(Arrays.asList("*"));
// configuration.setAllowedHeaders(List.of("Authorization", "Cache-Control", "Content-Type"));
// configuration.setAllowedOriginPatterns(List.of("http://localhost:5173"));
// configuration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "PUT", "OPTIONS", "PATCH", "DELETE"));
// configuration.setAllowCredentials(true);
// configuration.setExposedHeaders(List.of("Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Credentials"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
'디버그' 카테고리의 다른 글
[디버그] Vue 뒤로가기가 안될때 (0) | 2024.05.22 |
---|---|
[디버그] myBatis resultMap 사용시 주의사항 (0) | 2024.05.18 |
[디버그] 406 에러(Not Acceptable)가 발생할때 (0) | 2024.05.03 |
[디버그] around를 할때 method가 실행 안되는 문제 (0) | 2024.04.16 |
[디버그] 이클립스(eclipse) maven pom.xml에서 빨간줄 생길때 (0) | 2024.04.16 |