서버
에서 관리한다. (쿠키는 브라우저에 저장)세션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.save
req.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