Enjoy Programming

Express - session on express 본문

JavaScript/Node.JS

Express - session on express

LEETAEEON 2021. 5. 12. 04:03

바로 들어가자

 

npm i express-session 익스프레스 세션을 설치 해주고

app.js에 import

 

passport로 초기화및 세션을 저장해주기 전에 사용해 주자

session은 option을 지정해 주는데 쿠키나 도메인을 원하는데로 바꿔줄 수 있고 유효기간도 설정해 줄 수 있다.

 

그중 중요한 옵션인 secret을 지정해주자 - random string으로 쿠키에 있는 session  ID를 암호화 하기 위한 것이다.

session id를 보낼때 실제로 그 값을 그대로 보내진 말자.. 중요정보다 암호화 해주자

randomkeygen.com/

 

RandomKeygen - The Secure Password & Keygen Generator

RandomKeygen is a free mobile-friendly tool that offers a randomly generated keys and passwords you can use to secure any application, service or device.

randomkeygen.com

랜덤키젠에서 키를 하나 가져와서 .. 음 바로 secret의 값으로 주지 않고 .env에 환경변수로 넣어 주자

쿠키를 해석하게 되면 해킹의 위험이 따른다.

그리고서 process.env.환경변수명으로 옵션값을 할당

이번엔 콘솔창에 resave랑,,,, saveUninitialized를 정의 하라고 한다..

해주자. 

대충 읽어보니 강제로 세션store에 저장하는 옵션.. 수정이 되지 않았더라도 강제로 save... 이정도로,,,

그리고 savUninitialized 옵션도 주자.. 두값다 권하는 값을 줬다.

www.npmjs.com/package/express-session

 

express-session

Simple session middleware for Express

www.npmjs.com

자 재시작하면~!~!

쿠키정보가 뜬다.. 근데 header는 바뀌지 않았다... header.pug 에 !user.isAthenticated를 !user로 바꿔주자

req.user이기 때문에~!

 

수행순서를 다시 복기하자

로그인 하면 이정보를 담은 쿠키가 express로 보내지고 express는 session을 이용해 쿠키를 가질 수 있게 된다.

그리고 passport를 통해 session을 이용하는데, 즉 session이 가진 쿠키를 이용한다.

그 passport로 deserialize를 진행. passport는 deserialize한 사용자 정보를 미들웨어나 routes의 request object에 할당한다.

그렇게 어떤 라우트에서도 계속 사용자를 체크 할 수 있다.

 

서버를 재시작하면 새션의 정보가 사라진다. why? 현재 session정보와 쿠키정보를 모두 메모리에 저장하고 있기 때문이다.

다음 포스팅은 이를 유지시켜보자