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에서도 조회가 가능한데 이 경우 전체 쿠키 목록을 배열로 받아 반복문을 통해
해당 쿠키를 찾아야 하는 추가적인 작업이 필요하다.