1. JwtFilter 로그 찍어봄
try {
            //블랙리스트 조회
            if (blackListRepository.findByToken(token).isPresent()) {
                filterChain.doFilter(request, response);
                return;
            }

            //유효하지 않은 토큰은 블랙리스트 저장
            if(!jwtUtil.validateToken(token)) {
                blackListRepository.save(new BlackList(token));
                filterChain.doFilter(request, response);
                return;
            }

            Claims claims = jwtUtil.getUserInfoFromToken(token);
            String userName = claims.getSubject();

            // ✅ JWT에서 추출된 username 확인용 로그
            log.info("JWT subject(username) = {}", userName);

            setAuthentication(userName);
        } catch (Exception e) {
            //추가
            log.error("JWT 필터 예외 발생: {}", e.getMessage());
            
            // 토큰 파싱 실패 등 모든 예외도 블랙리스트에 등록
            blackListRepository.save(new BlackList(token));
            //filterChain.doFilter(request, response);
        }
  1. 실행결과 - 회원가입 시 에러로그 찍힘, DB에 저장은 됨

스크린샷 2025-10-08 오후 1.22.10.png

2번의 실행 중 1번은 성공했기에 DB 저장 성공 → 이후 로직도 잘 돌아감

스크린샷 2025-10-08 오후 3.02.50.png

스크린샷 2025-10-08 오후 3.02.34.png

JwtFilter에 아래 코드 추가해서 해결

String uri = request.getRequestURI();

        // 로그인, 회원가입, 로그아웃, 혹은 공용 요청은 필터 통과
        if (uri.startsWith("/api/v1/users/login") ||
                uri.startsWith("/api/v1/users/signup") ||
                uri.startsWith("/api/v1/users/logout")) {
            filterChain.doFilter(request, response);
            return;
        }

예외처리 로그 확인하기 위해 GlobalExceptionHandler에 로그 추가

// 나머지 예외
    @ExceptionHandler(Exception.class)
    public BaseResponse handleAllExceptions(Exception ex) {

        log.error("GlobalExceptionHandler 작동 - 예외 발생: {}", ex.getMessage(), ex);
        return new BaseResponse("요청이 실패했습니다. 서버 에러가 발생했습니다.");
    }