inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

WebMvcConfigurer에서 excludePatterns가 동작하지 않는 것 같습니다.

385

윤중진

작성한 질문수 10

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 인턴

안녕하세요, 인프런 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—

케이테스트 서버 운영 방법

2

54

1

맥유저 입장의 고려해주세요

2

85

1

수업 잘 들었습니다.

2

28

2

실행과정 질문입니다.

2

31

1