최근에 cookie사용과 삭제에 대해서 경험해보면서 쿠키 삭제를 위한 방법을 찾아보던 중에 반드시 참고해서 넘어가야 하는 부분을 확인하여 기록하여 남겨놓고자 짧게 글을 남겨놓는다.
이 경우에는 에러를 직접 경험하지는 않았지만 이렇게 남겨놓아야 생각을 다시 할 수 있을 것 같다.
res.clearCookie()를 express 공식문서 에서 찾아보면 아래와 같은 내용을 확인할 수 있다.
<express 공식문서 내용 일부 발췌>
Web browsers and other compliant clients will only clear the cookie if the given options is identical to those given to res.cookie(), excluding expires and maxAge.
<express 공식문서 내용 일부 발췌>
웹 브라우저 및 클라이언트는 지정된 옵션이 expires, maxAge를 제외하고 res.cookie()에서 제공된 옵션과 동일한 경우에만 쿠키를 지운다.
아래 코드블럭은 대표 예시이다. 메소드의 파라미터에 어떤부분이 들어가게 되는지 확인할 수 있다.
res.cookie('cookie name', 'cookie value', { cookie option }) // 쿠키 생성의 메소드
res.clearCookie('cookie name', { cookie option }) // 쿠키 삭제의 메소드
//clearCookie에서 expires, maxAge를 제외하고는 나머지 옵션과 똑같이 작성해 줄 수 있도록 해야한다.
위 대표 예시를 기준으로 내가 일부 작성했던 코드를 가져왔다.
아래 코드블럭의 방식대로라면 정상적으로 쿠키가 생성되고 삭제될 수 있다.
//accessToken과 refreshToken을 쿠키로 생성하는 예시(로그인할때 쿠키로 토큰 발급)
res.cookie("accessToken", accessToken, {
httpOnly: true,
maxAge: accessTokenExp,
})
.cookie("login refreshToken", refreshToken, {
httpOnly: true,
maxAge: refreshTokenExp,
})
//쿠키로 생성한 accessToken과 refreshToken을 삭제하는 예시(로그아웃할때 쿠키로 토큰 삭제)
res.clearCookie("accessToken", {
httpOnly: true,
})
.clearCookie("login refreshToken", {
httpOnly: true,
})
cf) 사실 위의 예시방법은 거의 사용하지 않는다. 왜냐하면 로그아웃은 토큰을 주로 쿠키를 삭제시킨다기 보다는 클라이언트 측에서 로그아웃을 시도하고자 할때 토큰을 무효화 시키거나 삭제시키는 방법을 하기 때문이다.
express에서 쿠키를 삭제할 때 참고 !