error
[error] jwt token 값 쿠키에서 가져올때, 쿠키 값이 null로 나올때 해결법
멋진놈
2024. 12. 30. 11:10
728x90
# 원인 :
쿠키값이 null로 나오는 문제는 브라우저에서 document.cookie를 통해 쿠키를 읽을 수 없기 때문에 발생함.
이는 쿠키에 HttpOnly 옵션이 설정된 경우 발생.
HttpOnly 쿠키는 클라이언트 측에서 JavaScript로 접근할 수 없고, 서버 측에서만 접근 가능합니다.
# 해결 방법
1. 쿠키에 HttpOnly 옵션 제거
HttpOnly 옵션을 제거하면 쿠키를 클라이언트에서 JavaScript로 읽을 수 있지만, 이는 보안 취약성을 증가시킬 수 있으므로 실무에서는 권장되지 않음.
2. 서버 API를 통해 JWT 검증 및 사용자 정보 반환
쿠키를 직접 읽지 않고, 서버에 요청하여 JWT를 검증하고 사용자 정보를 반환받는 방법을 사용.
# jwt 토큰을 검증하고 사용자 정보를 반환하는 api
/**
* JWT 토큰 유효성 검증
* @param token JWT 토큰
* @return 유효한 토큰인지 여부 (boolean)
*/
public boolean validateToken(String token) {
try {
Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token);
return true;
} catch (JwtException | IllegalArgumentException e) {
log.warn("Invalid Token: {}", e.getMessage());
return false;
}
}
@GetMapping("/verify-token")
public ResponseEntity<String> verifyToken(@CookieValue("jwt") String jwtToken) {
if (jwtTokenProvider.validateToken(jwtToken)) {
String email = jwtTokenProvider.getAuthentication(jwtToken).getName();
return ResponseEntity.ok(email);
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid token");
}
}
