매거진 유저 인증

Passport 로그인 (2)

by 이종복

이번 글에서는 이전 글에 이어서 Passport 로그인을 이어서 설명하겠습니다.


1) npm install express-session 으로 express-session을 설치합니다.

express-session은 Express.js에서 세션을 관리하기 위해 필요한 미들웨어입니다.

(참고: https://velopert.com/406)

hello329.png
hello330.png



2) express-session을 설치한 후에

app.js에서 import session from "express-session"app.use(session({})); 을 추가합니다.

hello331.png


3) app.use(session({})에는 고려해야 할 옵션들이 있습니다.

이 중 필수적인 옵션이 하나 있는데 secret이라는 것입니다.

secret은 무작위 문자열로서 쿠키에 들어있는 session ID를 암호화하기 위한 것입니다.


예를 들어 session ID를 전송할 때, 값을 그대로 보내지 않고 암호화해서 보냅니다.

왜냐면 누군가가 이 정보를 알면 안되기 때문입니다.

hello333.png


5) Secret에는 어떤 문자열을 넣어줘도 동작합니다.

왜냐하면 랜덤한 문자열이 암호화에 사용되기 때문입니다.

혹은 randomkeygen이라는 사이트로 이동해서 무작위로 생성된 문자열을 얻을 수도 있습니다.

hello334.png
hello335.png



6) 그리고 이 secret을 .env에 넣어줍니다.

왜냐하면 사람들이 이 secret을 보기를 원하지 않기 때문입니다.

만약에 누군가 이걸 알게 되면, 그 사람은 우리의 쿠키를 해독할 수 있게 됩니다.

hello336.png


7) 다음은 secret: 의 숫자를 process.env.COOKIE_SECRET으로 바꿔줍니다.

hello337.png


8) 다음은 app.use(session({})에 필요한 2가지 옵션을 추가해줍니다.

(1) resave는 session을 강제로 저장되도록 하고,

(2) saveUninitialized는 초기화되지 않은(uninitialized) 세션을 저장소에 저장합니다.

hello338.png


9) 이제 localhost:4000/join에 접속해서 다음과 같이 새로 회원 가입을 하면

hello340.png

10) 다음과 같이 쿠키가 생성된 것을 확인할 수 있습니다.

Value의 숫자와 알파벳이 섞인 것이 바로 'ID가 암호화된 것' 입니다.


그리고 내가 웹브라우저를 새로고침할 때마다

즉 이 정보를 웹서버에 전송할 때마다 서버에서는 Passport 인증과정을 호출하고

Passport는 Deserialize를 통해 내가 어느 사용자인지 식별하게 됩니다.

hello341.png


11) 다음과 같이 console.log(req.user)를 작성하고, (이 부분 skip)

hello342.png


12) localhost:4000/join으로 이동해서 다시 회원가입하면,

hello346.png

13) skip


14) Express는 세션을 이용함으로써 쿠키를 그 손에 쥐게 됩니다.

그리고 Passport를 통해서, 우린 session을 이용하는데, 즉 session이 가진 쿠키를 이용하게 됩니다.

그리고 그 Passport로 Deserialize를 진행합니다.


"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."

keyword
매거진의 이전글Passport 로그인(1)