인프런 커뮤니티 질문&답변

cloer님의 프로필 이미지
cloer

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

패스포트 사용하기

세션, 쿠키 질문

작성

·

206

0

강의에서 req.login에서 쿠키를 브라우저로 보낸다고 하셨는데 passport 깃헙의 req.login 함수코드에서 쿠키를 res에 추가하거나 하는 부분을 못찾았습니다. 

대신 req.login은 serializeUser를 호출하고 sericalizeUser에서 req.session에 유저관련 정보를 저장하는 부분을 봤습니다.

혹시 쿠키를 브라우저로 보내는 것은 express-session에서 req.session이 있으면 세션의 sid를 쿠키를 브라우저로 보내는건가요?

그래서 로그아웃시 req.logout으로 세션을 지우고 req.session.destroy로 req.session도 지워주는건가요?

req.session.destroy를 하지 않으면 세션에서는 req.logout으로 세션쿠키를 지웠는데 req.session은 남아있어 express-session이 세션에서 쿠키를 찾아 브라우저로 보내려고 하기 때문에 req.session.destroy도 해줘야한다고하면 말이 되는것 같아서 질문드립니다. 

 

정리하자면

쿠키를 브라우저로 보내는 것은 express-session에서 하는 것이고 express-session은 req.session이 있으면 해당 세션쿠키의 sid를 포함한 쿠키를 브라우저로 전송하는 건가요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 맞습니다. express-session에 setCookie 부분이 있습니다.

https://github.com/expressjs/session/blob/master/index.js#L243

제가 기억하기론 req.logout만 해도 session이 파괴됩니다. 그런데 혹시 몰라서 req.session.destory로 확실하게 없앤 겁니다.

https://github.com/jaredhanson/passport/blob/932c1b8a6ab17f81ff44a69825ce43c6434bb53a/lib/sessionmanager.js#L32

cloer님의 프로필 이미지
cloer

작성한 질문수

질문하기