인프런 커뮤니티 질문&답변
WebMvcConfigurer에서 excludePatterns가 동작하지 않는 것 같습니다.
작성
·
373
0
현재 제 WebConfig.java는 다음과 같습니다.
@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer {
private final JwtProvider jwtProvider;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry
.addInterceptor(new AuthInterceptor(jwtProvider))
.addPathPatterns("/**")
.excludePathPatterns("/api/auth/**");
}
}
여기서 /api/auth/login 으로 테스트 시도중인데,
/api/auth/login은 id, password만 필요한 필드입니다.
포스트맨으로 테스트 했을 때, id, password를 입력하면 AuthInterceptor를 거치지 않지만, request body 자체를 입력하지 않으면 AuthInterceptor를 거치게 됩니다. 왜 그런걸까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
WebMvcConfigurer 인터페이스에는 excludePatterns() 메서드가 없고, excludePathPatterns() 메서드가 있습니다. 따라서 WebConfig.java 파일에서 .excludePathPatterns() 메서드를 사용하신 점이 올바릅니다.
해당 문제에 대해서는 excludePathPatterns()에 전달된 “/api/auth/**” 패턴이 맞지 않아서 그럴 수 있는데요. 예를 들어, “/api/auth/test” 라는 URL이 있다면 해당 URL은 제외되지 않습니다. 따라서 “/api/auth/login” 도 AuthInterceptor를 거치는 것으로 보인다면, 다른 패턴이 더 우선되고 있지 않나 싶습니다. 또한, 포스트맨으로 테스트 시에도 request headers에 Authorization 토큰이 추가되어 있는지 확인 부탁드립니다.
해결책으로는 excludePathPatterns()에 “/api/auth/login/**” 경로를 추가하셔서 제외되도록 하시거나, 다른 패턴에 대한 설정을 다시 한번 확인해 보시는 것이 좋을 것 같습니다.
참고로, 이와 관련한 더 자세한 정보는 Spring 공식 문서를 참고하실 수 있습니다. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/InterceptorRegistry.html#addInterceptor-T—




