이번 글에서는 이전 글에 이어서 Passport 로그인을 이어서 설명하겠습니다.
1) npm install express-session 으로 express-session을 설치합니다.
express-session은 Express.js에서 세션을 관리하기 위해 필요한 미들웨어입니다.
(참고: https://velopert.com/406)
2) express-session을 설치한 후에
app.js에서 import session from "express-session"과 app.use(session({})); 을 추가합니다.
3) app.use(session({})에는 고려해야 할 옵션들이 있습니다.
이 중 필수적인 옵션이 하나 있는데 secret이라는 것입니다.
secret은 무작위 문자열로서 쿠키에 들어있는 session ID를 암호화하기 위한 것입니다.
예를 들어 session ID를 전송할 때, 값을 그대로 보내지 않고 암호화해서 보냅니다.
왜냐면 누군가가 이 정보를 알면 안되기 때문입니다.
5) Secret에는 어떤 문자열을 넣어줘도 동작합니다.
왜냐하면 랜덤한 문자열이 암호화에 사용되기 때문입니다.
혹은 randomkeygen이라는 사이트로 이동해서 무작위로 생성된 문자열을 얻을 수도 있습니다.
6) 그리고 이 secret을 .env에 넣어줍니다.
왜냐하면 사람들이 이 secret을 보기를 원하지 않기 때문입니다.
만약에 누군가 이걸 알게 되면, 그 사람은 우리의 쿠키를 해독할 수 있게 됩니다.
7) 다음은 secret: 의 숫자를 process.env.COOKIE_SECRET으로 바꿔줍니다.
8) 다음은 app.use(session({})에 필요한 2가지 옵션을 추가해줍니다.
(1) resave는 session을 강제로 저장되도록 하고,
(2) saveUninitialized는 초기화되지 않은(uninitialized) 세션을 저장소에 저장합니다.
9) 이제 localhost:4000/join에 접속해서 다음과 같이 새로 회원 가입을 하면
10) 다음과 같이 쿠키가 생성된 것을 확인할 수 있습니다.
Value의 숫자와 알파벳이 섞인 것이 바로 'ID가 암호화된 것' 입니다.
그리고 내가 웹브라우저를 새로고침할 때마다
즉 이 정보를 웹서버에 전송할 때마다 서버에서는 Passport 인증과정을 호출하고
Passport는 Deserialize를 통해 내가 어느 사용자인지 식별하게 됩니다.
11) 다음과 같이 console.log(req.user)를 작성하고, (이 부분 skip)
12) localhost:4000/join으로 이동해서 다시 회원가입하면,
13) skip
14) Express는 세션을 이용함으로써 쿠키를 그 손에 쥐게 됩니다.
그리고 Passport를 통해서, 우린 session을 이용하는데, 즉 session이 가진 쿠키를 이용하게 됩니다.
그리고 그 Passport로 Deserialize를 진행합니다.
"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."