JWT Interceptor에서 Swagger 제외하기
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