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

esq23님의 프로필 이미지

작성한 질문수

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

안녕하세요 express-session, cookie-parser 에대한 질문이 있습니다.

22.04.07 21:31 작성

·

170

0

안녕하세요 제로초님 제가 제로초님 노드 교과서랑 강의를 구매해 공부 중에 있는데 처음에 너무 어려워서 중도 포기를 했다가 마음을 다잡고 다시 열심히 달려보려 하는 한 학생입니다. 설명을 쉽게 잘해주시는데 처음 접해보는 것이 너무 많아 이해가 조금 어렵더라고요ㅠㅠ 그래서 공부 중 6장의 cookie-parser와 express-session에 대한 궁금증이 있어 이렇게 글을 남기게 되었습니다. 

1. 기존 사용자에 경우 브라우저가 사용자의 정보를 알고 있는데 어떤 식으로 express-session과 cookie-parser를 사용해 브라우저가 기억하고 있는 건지 과정이 궁금합니다. 로그인할 때마다 cookie를 새로 생성하나요?

2. cookie를 생성하고 console.log(req.session)을 확인했는데

Session {

    cookie: {

    path: '/',

    _expires: null,

    originalMaxAge: null,

    httpOnly: true,

    secure: true

  }

}

cookie에는 cookie에 대한 정보가 없습니다. 

답변 1

0

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

2022. 04. 07. 22:20

1. 로그인을 하면 서버가 쿠키를 생성합니다. 그리고 응답할 때 set-cookie 헤더를 설정해 브라우저한테 보내는데 브라우저는 set-cookie 헤더를 보고 쿠키를 저장합니다. express-session의 경우 connect.sid 쿠키입니다. 또한 동시에 서버의 세션인(req.session)에 쿠키와 유저 정보를 저장합니다.

다음부터 브라우저는 요청을 보낼 때 쿠키를 같이 보내게 되는데 connect.sid에 사용자 쿠키가 들어있을 것이고, 서버에서는 그 값이 세션에 저장된 값들 중에 일치하는 값을 찾아서 유저 정보를 req.user로 만듭니다.

2. req.session을 언제 console.log 하셨나요? req.session을 콘솔로그해도 쿠키가 바로 나오진 않을 겁니다. 볼 방법이 없을 수도 있습니다.

esq23님의 프로필 이미지
esq23
질문자

2022. 04. 08. 00:34

친절한 답변 정말 감사드립니다.

답변을 보고 이해가 잘 되었습니다. 그런데 한 가지 더 궁금증이 생기더라고요

1. 회원가입을 한다.

2. 서버는 cookie를 브라우저에 set-cookie헤더에 넣어 응답을한다.

3. 브라우저는 set-cookie에 있는 cookie 정보를 저장한다. 동시에 req.session에 유저 정보와 쿠키를 저장한다.

4. 이후 로그인한 유저는 매 요청 때마다 쿠키를 같이 서버로 보낸다.

5. 서버는 요청한 유저를 connect.sid에 들어있는 쿠키로  req.user로 만든다.

위 과정이 맞나요? 생략된 과정이 있는지 궁금합니다ㅠㅠ

이후 로그아웃 후 사용자 로그인때 회원가입때 생성한 cookie를 사용하지 않고 매번 새로 cookie를 만드는 건가요?

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

2022. 04. 08. 00:36

새로 만든다고는 안 했는데요? 새로 만들 수가 없는게 쿠키는 서버에서만 만들 수 있는데 요청은 브라우저에서 쿠키와 함께 오는겁니다. 로그인때 만든 쿠키를 계속 그대로 쓸 수밖에 없습니다.

esq23님의 프로필 이미지
esq23
질문자

2022. 04. 08. 00:39

아하! 해결이 되었습니다! 늦은 시간인데 답변 정말 감사드립니다.! 제가 아직 과정이 헷갈려서 잘못 적었나 봐요ㅠㅠ

esq23님의 프로필 이미지

작성한 질문수

질문하기