오늘은 복습과제를 완성해서 특별히 새로 배운건 없고 복습을 많이 했는데, 어제 에러가 났던 부분을 튜터님에게 도움을 청해서 고쳤다.
에러가 난 부분은 필터 쪽이 맞았는데, 나의 코드실수(?) 때문이었다.
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String token = jwtUtil.getJwtFromRequest(request);
if (StringUtils.hasText(token)) {
token = jwtUtil.substringToken(token);
if (!jwtUtil.validateToken(token)) {
log.error("Token Error");
return;
}
//Jwt 토큰에서 Member 정보 추출
Claims info = jwtUtil.getUserInfoFromToken(token);
try {
setAuthentication(info.getSubject());
} catch (Exception e) {
log.error(e.getMessage());
return;
}
filterChain.doFilter(request, response);
}
}
에러가 난 코드는 해당코드인데, 어디가 문제인지 찾아보자
해당 코드는 토큰유무를 확인하고 토큰에서 멤버정보를 뽑아오고 다음 필터로 이동하는 코드이다.
.
.
.
.
.
그렇다. 틀린곳은 여기
해당 코드를 if문 밖으로 빼야한다. 저렇게 하면 토큰이 없을 경우에는 다음 필터로 넘어가지 않고 코드가 끝나게 되어 정상동작했으니 200 OK가 출력되고, 바디에는 아무것도 나오지 않고, API를 호출하지 않는 것도 당연하다...
글 중에 필터 개수가 많아 return을 잘못 사용하면 필터단에서 코드가 끝나서 같은 에러가 발생한다고 읽었는데, 그건 아니고 너무 쉬운 해프닝이었다...