
서버에서 관리한다. (쿠키는 브라우저에 저장)세션ID를 부여 유일한 ID를 보내준다.유일한 ID가 세션ID
동작방식
1.클라이언트가 서버에 정보와 함께어떤 req를 보낸다
2.서버는db에 정보를 저장한다. .
3.세션저장소에서 세션id를 생성하여 서버에 보낸다.
4.서버가응답+세션id를 클라이언트에게 보낸다.(쿠키를 사용하여 저장?)
5.쿠키를 통해 세션id로 서버에어떤2 req를 보낸다
6.서버는 db에서세션id를 체킹하고 일을 수행한다.
7.이때 세션id가 서버에서 유효한지 체킹이 되었다면, 서버는 요청에 접근이 가능하다고 판단함 (일 완료가 가능하다)
8.서버는 ct에게 성공적인 data로 응답한다.
해야할일 2가지
1.서버에 있는 세션정보를 삭제한다.
2.클라이언트의 쿠키를 갱신한다.
'express-session'은 세션을 위한 미들웨어로, 'Express'에서 세션을 다룰 수 있는 공간을 보다 쉽게 만들어줌
req.session : 세션객체에 세션데이터를 저장하거나 불러올때 사용함
req.session.savereq.session.save( () => {
req.session.userId = userInfo.userId;
res.status(200).json({ data: userInfo, message: 'ok' });
})
req.session.destroy() req.session.destroy((err)=>{
if(err){
throw err;
} else {
res.status(200).send();
}
});
logout핸들러함수도 구현해주어야한다. logout핸들러함수 호출! )==> 개선방법은 토큰 기반의 jwt