TypeScript와 Express-session으로 로그인 처리하기 (3): 로그인 유지와 로그아웃
로그인 유지 기능은 인증을 대신하지 않습니다. 비밀번호 검증과 세션 재발급이 성공한 뒤에만 사용자의 선택에 따라 세션 수명을 늘리고, 로그아웃 때는 서버 저장소의 세션까지 파기해야 합니다.remember-me 수명 설정
const fourteenDaysInMs = 14 * 24 * 60 * 60 * 1000;
req.session.cookie.maxAge = isRemember
? fourteenDaysInMs
: undefined;로그아웃은 쿠키와 서버 세션을 함께 지운다
router.post("/logout", (req, res, next) => {
return req.session.destroy(error => {
if (error) return next(error);
res.clearCookie("sid");
return res.status(204).end();
});
});점검 목록
- 운영 환경은 HTTPS와 secure cookie를 사용한다.
- 세션 ID는 로그인 성공 시 재발급한다.
- 만료·로그아웃·비밀번호 변경 시 서버 저장소의 세션도 제거한다.