inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

391

윤중진

작성한 질문수 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—

매일 사용시 토큰사용량

1

58

2

인텔리제이 설정 최신화 관련 확인 부탁 드립니다!

1

50

2

5강때 초보가 겪었던 어려움 공유 (극복완료)

1

50

2

클로드 디자인 안에서 프롬프트 작성시?

1

31

1