cookie-parser
cookie-parser는 요청에 동봉된 쿠키를 해석해 req.cookies 객체로 만듭니다. cookie-parser 미들웨어는 다음과 같이 사용합니다.
app.use(cookieParser(비밀키));
해석된 쿠키들들은 req.cookies 객체에 들어갑니다. 예를 들어 name=zecrocho 쿠키를 보냈다면 req.cookies는 { name: 'zerocho' }가 됩니다. 유효 기간이 지난 쿠키는 알아서 걸러냅니다.
첫 번째 인수로 비밀 키를 넣어 줄 수 있습니다. 서명된 쿠키가 있는 경우, 제공한 비밀 키를 통해 해당 쿠키가 내 서버가 만든 쿠키임을 검증할 수 있습니다. 쿠키는 클라이언트에서 위조하기 쉬우므로 비밀 키를 통해 만들어낸 서명을 쿠키 값 뒤에 붙입니다. 서명이 붙으면 쿠키가 name=zerocho.signin과 같은 모양이 됩니다. 서명된 쿠키는 req.cookies 대신 req.signedCookies 객체에 들어 있습니다.
cookie-parser가 쿠키가 생성할 때 쓰이는 것은 아닙니다. 쿠키를 생성/제거하기 위해서는 res.cookie.res.clearCookie 메서드를 사용해야 합니다. res.cookie(키, 값, 옵션) 형식으로 사용합니다. domain, expires, httpOnly, maxAge, path, source 등이 있습니다.
res.cookie('name', 'zerocho', {
expires: new Date(Date.now() + 900000),
httpOnly: true,
secure: true,
});
res.clearCookie('name', 'zerocho', { httpOnly: true, secure: true });
쿠키를 지우려면, 키와 값 외에 옵션도 정확히 일치해야 쿠키가 지워집니다. 단, expires나 maxAge 옵션을 필요가 없습니다.
옵션 중에는 signed라는 옵션이 있는데, 이를 true로 설정하면 쿠키 뒤에 서명이 붙습니다. 내 서버가 쿠키를 만들었다는 것을 검증할 수 있으므로 대부분의 경우 서명 옵션을 켜두는 것이 좋습니다. 서명을 위한 비밀 키는 cookieParser 미들웨어에 인수로 넣은 process.env.COOKIE_SECRET이 됩니다.
'프로그래밍 언어 > NODE JS' 카테고리의 다른 글
| 미들웨어 특성 활용하기 (1) | 2025.06.27 |
|---|---|
| expression-session (0) | 2025.06.26 |
| body-parser (0) | 2025.06.19 |
| static (0) | 2025.06.16 |
| morgan (0) | 2025.06.16 |