세션 쿠키와 영속 쿠키

황인우·2025년 2월 10일

프로젝트 과정 중 JWT 토큰과 리프레쉬 토큰을 쿠키로 보내기 위해 설정을 하였다.

// 쿠키 생성
public void setCookie(String name, String value) {
	ResponseCookie cookie = ResponseCookie.from(name, value)
		.path("/")
		.domain("localhost")
		.httpOnly(true)
		.build();

        resp.addHeader("Set-Cookie", cookie.toString());
    }

(secure 등의 설정은 브라우저 별 정책 및 http로 사용하지 않았다.)


그리고 이후 최근 소셜 로그인 한 방법을 알려주기 위해 쿠키를 추가했다.

그런데 문제가 브라우저를 종료하면 함께 삭제된다는 것이었다.

알아보니 쿠키의 수명을 설정하지 않으면 "세션 쿠키"로 저장이 된다.

이 쿠키들은 세션이 종료되면, 브라우저가 꺼지면 함께 삭제된다.


브라우저가 종료되어도 쿠키가 유지되기 위해서는 (영속 쿠키)

쿠키의 기간을 설정해주어야 한다.

public void setLongCookie(String name, String value) {
	ResponseCookie cookie = ResponseCookie.from(name, value)
		.path("/")
		.domain("localhost")
		.httpOnly(true)
		.maxAge(31536000)  // 1년
		.build();

        resp.addHeader("Set-Cookie", cookie.toString());
    }

얼마가 좋을지는 몰라서 일단 1년으로 설정해주었다.

이제 쿠키를 통해 1년 안에 다시 접속한다면

마지막으로 로그인했던 소셜 방식을 알 수 있게 되었다.


세션 쿠키영속 쿠키
브라우저 종료 시삭제됨유지됨
설정 방법수명 미설정수명 설정
사용되는 곳보안이 중요한 정보,
로그인 세션 관리,
CSRF 방지 토큰 등
자동 로그인,
사용자 설정 (예: 다크모드),
장바구니 등

0개의 댓글