1. 문제 상황

  • JWT Interceptor 적용 후 Swagger에 접속하면 오류 메시지가 뜨고 접속할 수 없음


2. 원인 파악

  • Swagger를 포함한 모든 경로에서 JWT Interceptor가 동작하고 있었다
    • Swagger 접속시에 JWT Interceptor에 작성해둔 로그가 찍힘


3. 해결 방법

  • WebConfig에 Interceptor를 등록할 때 Swagger 경로를 제외한다
  • 로그를 출력해서 요청이 가고 있는 경로를 확인 한 후 관련된 경로를 제외하였다


1) 요청 경로 확인 방법

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse reponse, Object handler) 
throws Exception {
    String uri = request.getRequestURI();
    logger.debug("uri : " + uri.toString());
// ...
    throw new InvalidJwtTokenException("유효하지 않은 토큰입니다.");
}
  • 확인한 경로들 : "/docs/swagger-ui/**", "/swagger-ui/**", "/docs/swagger-config/**", "/docs/main/**"


    💡 Swagger URI 패턴

    • /docs/swagger-ui/**, /swagger-ui/** : Swagger UI 리소스 제공
    • /docs/swagger-config/** : Swagger 설정 파일에 접근
    • /docs/main/** : Swagger 문서에 접근


2) Interceptor 등록할 때 Swagger 경로 제외

@Override
public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(jwtInterceptor)
				.addPathPatterns("/**")
                .excludePathPatterns("/docs/swagger-ui/**", "/swagger-ui/**", "/docs/swagger-config/**", "/docs/main/**");
}


3) Swagger 접속하여 확인


Leave a comment