SPRING

[SPRING] 쿠키활용법

steadyMan 2022. 7. 21. 01:38

주로 브라우저에 저장해도 보안상 문제가 없는 데이터를 쿠키를 통해 사용하는데

스프링에서 쿠키를 생성하고 조회하는 방법에 대해 학습한 내용을 정리합니다. 

쿠키종류

쿠키는 생성할 때 만료 날짜 입력 여부에 따라 속성이 달라지는데

만료 날짜가 없다면 세션쿠키로 브라우저 종료 시 삭제된다.

만료날짜가 있다면 영속 쿠키로 만료 날짜까지 유지된다.

쿠키생성

@GetMapping("/cookie")
public String createCookie(HttpServletResponse response) {
    Cookie cookie = new Cookie("cookieName", LocalDateTime.now().toString()); // 쿠키의 key, value 입력
    cookie.setMaxAge(120); // 만료기간 지정 - 초단위 설정
    response.addCookie(cookie); // 응답에 생성한 쿠키를 추가하여 리턴한다.
    return "ok";
}

생성된 쿠키

만료기간이 초단위로 설정되기 때문에 유의해야 한다. 위에서 120을 입력했는데 120초 즉 2분간 유지된다.

쿠키삭제

@GetMapping("/logoutcookie")
public String deleteCookie(HttpServletRequest request, HttpServletResponse response) {
    Cookie cookie = new Cookie("cookieName", null);
    cookie.setMaxAge(0); // 유지시간을 0으로 하여 삭제한다.
    response.addCookie(cookie);
    return "redirect:/";
}

삭제하려는 쿠키와 같은 key값으로 쿠키를 생성하여 만료시간을 0으로 하고 리턴하면 쿠키가 제거된다.

쿠키 조회

@GetMapping("/cookie")
public String cookie(@CookieValue(name = "cookieName", required = false) String cookie, HttpServletRequest request,  HttpServletResponse response) {
    log.info("cookie Value = {}", cookie); // @CookieValue 애노테이션을 사용한 조회
    Cookie[] cookies = request.getCookies(); // request에서 조회한 전체 쿠키목록
    return "redirect:/";
}

@CookieValue 애노테이션을 활용하여 손쉽게 조회가 가능하다. @RequestParam와 유사하게 조회대상의

key 값을 name속성에 입력하여 조회한다.

HttpServletRequest에서도 조회가 가능한데 이 경우 전체 쿠키 목록을 배열로 받아 반복문을 통해

해당 쿠키를 찾아야 하는 추가적인 작업이 필요하다.