33import jakarta .servlet .http .Cookie ;
44import jakarta .servlet .http .HttpServletResponse ;
55
6+ import jakarta .servlet .http .Cookie ;
7+ import jakarta .servlet .http .HttpServletResponse ;
8+
69public class CookieUtil {
710
8- public static void addCookie (HttpServletResponse response , String name , String value , int maxAge , String path ) {
11+ /**
12+ * 쿠키 추가 메서드
13+ *
14+ * @param response HttpServletResponse 객체
15+ * @param name 쿠키 이름
16+ * @param value 쿠키 값
17+ * @param maxAge 쿠키 수명 (초 단위, 음수: 브라우저 종료 시 삭제, 0: 즉시 삭제)
18+ * @param path 쿠키 경로 (null이면 "/")
19+ * @param secure HTTPS에서만 전송 여부
20+ */
21+ public static void addCookie (
22+ HttpServletResponse response ,
23+ String name ,
24+ String value ,
25+ int maxAge ,
26+ String path ,
27+ boolean secure
28+ ) {
929 Cookie cookie = new Cookie (name , value );
10- cookie .setHttpOnly (true );
11- cookie .setSecure (true );
12- cookie .setPath (path );
30+ cookie .setHttpOnly (true ); // JS 접근 차단
31+ cookie .setSecure (secure ); // HTTPS에서만 전송 (dev/prod 분기 권장)
32+ cookie .setPath (path != null ? path : "/" ); // 기본 path = /
1333 cookie .setMaxAge (maxAge );
14- response .addCookie (cookie );
34+
35+ // SameSite 설정 → Servlet Cookie API엔 없어서 수동 헤더 추가 필요
36+ String sameSite = secure ? "None" : "Lax" ;
37+ // cross-site 환경이면 None + Secure, same-site면 Strict/Lax 선택
38+ response .addHeader ("Set-Cookie" ,
39+ String .format ("%s=%s; Max-Age=%d; Path=%s; HttpOnly; Secure=%s; SameSite=%s" ,
40+ cookie .getName (),
41+ cookie .getValue (),
42+ cookie .getMaxAge (),
43+ cookie .getPath (),
44+ cookie .getSecure () ? "true" : "false" ,
45+ sameSite
46+ )
47+ );
1548 }
1649
17- public static void clearCookie (HttpServletResponse response , String name , String path ) {
18- Cookie cookie = new Cookie (name , null );
19- cookie .setHttpOnly (true );
20- cookie .setSecure (true );
21- cookie .setPath (path );
22- cookie .setMaxAge (0 );
23- response .addCookie (cookie );
50+ /**
51+ * 쿠키 삭제 메서드
52+ *
53+ * @param response HttpServletResponse 객체
54+ * @param name 삭제할 쿠키 이름
55+ * @param path 쿠키 경로 (null이면 "/")
56+ * @param secure HTTPS에서만 전송 여부
57+ */
58+ public static void clearCookie (HttpServletResponse response , String name , String path , boolean secure ) {
59+ addCookie (response , name , "" , 0 , path , secure );
2460 }
25- }
61+ }
0 commit comments