Class CookieUtils

java.lang.Object
com.jerocaller.libs.spoonsuits.web.cookie.CookieUtils

@Component public class CookieUtils extends Object

쿠키 유틸리티 Spring Bean

사용자의 쿠키 설정 커스텀을 가능하게 하기 위해 별도의 CookieConfigurer를 의존성 주입함. 기본 CookieConfigurer는 DefaultCookieConfigurerImpl로, 개발용으로 설정함.

만약 쿠키 설정 커스텀을 하고자 한다면

  1. CookieConfigurer를 implements하며,
  2. 해당 구현체에 @Primary@Component어노테이션을 부여한다.

쿠키 설정 커스텀 예시)


 @Primary
 @Component
 public class MyCookieConfigurer implements CookieConfigurer {

     @Override
     public void configureCookie(Cookie cookie) {
         cookie.setHttpOnly(true);
         cookie.setPath("/");
         cookie.setSecure(True);
     }
 }
 
 

주의) CookieConfigurer를 이용한 쿠키 설정은 한 번 설정하면 모든 쿠키에 적용된다. 따라서 만약 각 쿠키마다의 쿠키 설정을 달리해야한다면 이 유틸리티 사용은 부적합할 수 있다.

See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addCookie(jakarta.servlet.http.HttpServletResponse response, CookieRequest cookieRequest)
    새로운 쿠키 추가 메서드.
    void
    deleteCookies(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, String... cookieNames)
    여러 개의 쿠키를 삭제할 수 있는 메서드
    <T> T
    deserialize(jakarta.servlet.http.Cookie cookie, Class<T> cls)
    CookieUtils#serialze() 메서드를 통해 직렬화된 값이 들어있는 쿠키로부터 해당 값을 역직렬화하여 자바 객체로 반환한다.
    자바 객체를 직렬화하여 쿠키 값에 넣고자 할 때 사용하는 메서드.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CookieUtils

      public CookieUtils()
  • Method Details

    • addCookie

      public void addCookie(jakarta.servlet.http.HttpServletResponse response, CookieRequest cookieRequest)

      새로운 쿠키 추가 메서드.

      새롭게 추가하고자 하는 쿠키의 name, value, maxAge 설정은 CookieRequest를 이용한다. 그 외 HttpOnly, Https 여부 등의 나머지 쿠키 설정은 CookieConfigurer를 이용하여 설정한다.

      CookieConfigurer에 maxAge를 설정한 경우, CookieRequest의 maxAge를 무시하고 CookieConfigurer에 설정된 maxAge를 우선으로 한다. 다만 CookieConfigurer 내부에 maxAge를 설정하는 경우는 쿠키 사용의 유연성 측면에서 비권장됨.

      Parameters:
      response -
      cookieRequest -
      See Also:
    • deleteCookies

      public void deleteCookies(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, String... cookieNames)

      여러 개의 쿠키를 삭제할 수 있는 메서드

      삭제하고자 하는 쿠키의 name을 String 형태로 대입한다. 삭제 대상 쿠키의 설정은 CookieConfigurer에서 설정한 그것과 일치하며, 만약 CookieConfigurer에 maxAge를 설정한 경우, 쿠키 삭제를 위해 이 설정은 무시되며, 무조건 maxAge = 0으로 설정된다. 다만 CookieConfigurer 내부에 maxAge를 설정하는 경우는 쿠키 사용의 유연성 측면에서 비권장됨.

      Parameters:
      request -
      response -
      cookieNames - 삭제하고자 하는 쿠키들의 name
    • serialize

      public String serialize(Object obj)

      자바 객체를 직렬화하여 쿠키 값에 넣고자 할 때 사용하는 메서드.

      이 메서드에서는 자바 객체를 String 타입으로 직렬화만 한다. 따라서 이 값을 쿠키의 값으로 추가하고자 한다면 CookieUtils#addCookie() 메서드를 이용한다.

      Parameters:
      obj - 직렬화하고자 하는 자바 객체. 반드시 Serializable 인터페이스를 구현해야 함.
      Returns:
      자바 객체를 직렬화하여 나온 String 타입의 값
      See Also:
    • deserialize

      public <T> T deserialize(jakarta.servlet.http.Cookie cookie, Class<T> cls) throws IOException, ClassNotFoundException

      CookieUtils#serialze() 메서드를 통해 직렬화된 값이 들어있는 쿠키로부터 해당 값을 역직렬화하여 자바 객체로 반환한다.

      내부적으로 ByteArrayInputStream 및 ObjectInputStream을 이용하여 역직렬화함. 역직렬화 대상인 자바 객체에는 반드시 Serializable 인터페이스를 구현하고 있어야 함.

      Type Parameters:
      T - 역직렬화하고자 하는 자바 객체 타입
      Parameters:
      cookie -
      cls - 역직렬화하고자 하는 자바 객체 클래스.
      Returns:
      역직렬화된 자바 객체
      Throws:
      IOException - byte 형태로 변환된 쿠키의 값을 읽고 역직렬화하는 과정에서 문제가 발생한 경우
      ClassNotFoundException - 역직렬화 대상 자바 객체의 클래스를 찾지 못한 경우
      See Also: