-
6월 20일 화요일 TIL 회고록카테고리 없음 2023. 6. 20. 22:31
지난번에 해결을 못하고 끝낸 리이슈를 하려고 하면 나오는 jwt string argument cannot be null or empty 오류를 해결했다.
먼저 컨트롤러 부분을 보자.
UserController.class
// 리이슈 @PostMapping("/reissue") public TokenResponse reissue(HttpServletRequest request) { String refreshToken = jwtUtil.resolveRefreshToken(request); return userService.reissue(refreshToken); }
HttpServletRequest request를 매개변수로 받고 jwtUtil 클래스에 resolveRefreshToken 메서드를 사용해서 refreshToken 값을 가져오고 리턴시킨다.
여기서 봐야할 것은 resolveRefreshToken 메서드인데, 여기를 디버그 모드로 확인해보니 refreshToken에 값이 들어가지 않았다.
그래서 resolveRefreshToken 메서드를 확인해봤다.
JwtUtil.class
// 리프레시 토큰을 가져오기 public String resolveRefreshToken(HttpServletRequest request) { String bearerToken = request.getHeader(REFRESH_HEADER); if (StringUtils.hasText(bearerToken) && bearerToken.startsWith(BEARER_PREFIX)) { return bearerToken.substring(7); } return null; }
resolveRefreshToken 메서드이다. HttpServletRequest request를 매개변수로 받는다.
여기서 봐야하는게 REFRESH_HEADER 값인데 이걸 나는 Refresh라고 선언했다.
public static final String REFRESH_HEADER = "Refresh"; // Refresh 헤더에 들어가는 키값
지금까지는 POSTMAN으로 토큰 리이슈 테스트를 할 때 Headers 값에 Key 값에 RefreshToken이라 적고 Value값에 리프레시 토큰을 적었다. 근데 resolveRefreshToken 메서드에 REFRESH_HEADER 값은 "Refresh" 라고 선언했다.
혹시 이거때문에 오류가 나왔나 생각하고 Header 값에 Refresh라고 적어봤다.
실행이 잘된다...
레디스에서도 값이 잘 들어갔다.
어쩐지 구글링을 해봐도 관련 내용이 별로 없던데.. 정말 사소한 오류였다.. ㅋㅋㅋ..
내 개인 프로젝트는 지도 api가 필요해서 카카오 지도 api를 사용해보려 하는데 잘 안된다..