Request requested invalid session id 에러
2024-09-11T20:04:00.954+09:00 DEBUG 3692 --- [JejuTravel-BE] [nio-8080-exec-6] o.s.s.w.session.SessionManagementFilter : Request requested invalid session id 1083270A16241BCA37BBD96A322B993D
세션 관리를 STATELESS로 설정했기 때문에 세션이 전혀 사용되지 않는 상태입니다. 따라서 세션을 통해 accessToken을 저장하고 사용하려면 SessionCreationPolicy.STATELESS를 수정해야 합니다.
세션을 허용하도록 SessionCreationPolicy 변경: 세션을 사용하기 위해서는 STATELESS가 아닌 IF_REQUIRED 또는 **ALWAYS**로 설정해야 합니다.
@EnableMethodSecurity
@RequiredArgsConstructor
@Configuration
public class SecurityConfig {
private final JwtAuthenticationFilter jwtAuthenticationFilter;
private final AuthenticationEntryPoint entryPoint;
private final String[] allowedUrls = { "/api/auth/signin", "/api/auth/signup",
"api/v1/create/event", "api/v1/events", "api/v1/event", "api/v1/update/event", "api/v1/delete/event",
"/api/v1/busStop", "/api/v1/publicWifi", "/api/v1/publicToilet",
"/api/v1/busStop/search", "/api/v1/publicWifi/search", "/api/v1/publicToilet/search",
"/api/v1/restaurant", "/api/v1/restaurant/search",
"/api/v1/shopping", "/api/v1/shopping/search",
"/api/v1/stay", "/api/v1/stay/search",
"/api/v1/tourism", "/api/v1/tourism/search", "/api/v1/**" }; // 허용할 URL 목록
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.cors(corsCustomizer -> corsCustomizer.configurationSource(new CorsConfigurationSource() {
@Override
public CorsConfiguration getCorsConfiguration(HttpServletRequest request) {
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(Collections.singletonList("http://localhost:5173")); // 허용할 도메인 설정
config.setAllowedMethods(Collections.singletonList("*")); // 모든 HTTP 메서드 허용
config.setAllowCredentials(true); // 인증 정보를 포함할 수 있도록 설정
config.setAllowedHeaders(Collections.singletonList("*")); // 모든 헤더 허용
config.setExposedHeaders(Collections.singletonList("New-Access-Token")); // 노출할 헤더 설정
config.setMaxAge(3600L); // 캐시 유지 시간
return config;
}
}))
.csrf(CsrfConfigurer<HttpSecurity>::disable) // CSRF 비활성화 (필요시 설정)
.headers(headers -> headers.frameOptions(FrameOptionsConfig::sameOrigin))
.authorizeHttpRequests(requests -> requests
.requestMatchers(allowedUrls).permitAll() // 허용된 URL 목록에 대한 요청 허용
.anyRequest().authenticated()) // 그 외 모든 요청은 인증 필요
// 세션 관리 설정을 수정
.sessionManagement(sessionManagement ->
sessionManagement.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)) // 세션이 필요할 때 생성
.addFilterBefore(jwtAuthenticationFilter, BasicAuthenticationFilter.class) // JWT 필터 추가
.exceptionHandling(handler -> handler.authenticationEntryPoint(entryPoint)) // 인증 오류 핸들링
.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); // 비밀번호 암호화 설정
}
}
'개발 Error' 카테고리의 다른 글
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; (1) | 2024.09.14 |
---|---|
위챗 로그인 open api 가입... (개인으로) 불가하다 (0) | 2024.09.12 |
Error parsing HTTP request header (0) | 2024.09.11 |
응답에 \ 가 포함 에러 (0) | 2024.09.04 |
[IntelliJ] cannot resolve symbol 에러 (0) | 2024.09.04 |