미리 만들어 놓은 JWT Util을 사용을 하여 로그인 API를 구현했다.
createToken()
public String createToken(String userId) {
Date date = new Date();
return BEARER_PREFIX + Jwts.builder()
.setSubject(userId)
.setExpiration(new Date(date.getTime() + TOKEN_EXPIRED_TIME))
.setIssuedAt(date)
.signWith(key, signatureAlgorithm)
.compact();
}
이 메서드를 사용해서 토큰을 생성해주고,
addJwtToCookie()
public void addJwtToCookie(String token, HttpServletResponse response) {
try {
token = URLEncoder.encode(token, "utf-8")
.replaceAll("\\+", "%20");
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, token); // Name-Value
cookie.setPath("/");
response.addCookie(cookie);
} catch (UnsupportedEncodingException e) {
throw new UnsupportedJwtException(e.getMessage());
}
}
이 메서드를 사용해서 JWT를 저장을 한다.
나는.. 바보였다..
.addCookie(cookie)
이 addCookie
가 바로 브라우저 크롬 쿠키에 저장이 되는 건 줄 알았다.
정말 상상도 못했다.
알고 보니..
header
에 저장되어서 전달이 되는 거였다...
로그인을 구현하면서 프론트엔드에서 header
에 들어오는 것을 처리하지 못한다고하여서
body로 보냈다...