inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

233

esq23

작성한 질문수 3

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에 대한 정보가 없습니다. 

Sequelize mysql nodejs mongodb

답변 1

0

제로초(조현영)

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

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

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

0

esq23

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

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

1. 회원가입을 한다.

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

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

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

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

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

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

0

제로초(조현영)

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

0

esq23

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

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

932

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

388

1

리뉴얼 강의 및 공부 방법

0

590

1

jwt decode

0

1138

1

node.js 교과서 3판 질문드립니다

0

399

1

passport와 jwt

0

439

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

360

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

491

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

512

2

nunjucks res.render('error'); 작동을 안합니다.

0

521

1

질문있습니다.

0

349

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3547

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

multer 사용시 file 외 name값은 못받나용?

0

431

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

294

1

Strategy의 done에 대해 질문드립니다.

0

375

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

511

2

res.setHeader vs res.cookie

0

1799

3