강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

윤중진님의 프로필 이미지
윤중진

작성한 질문수

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—

윤중진님의 프로필 이미지
윤중진

작성한 질문수

질문하기