상세 컨텐츠

본문 제목

ch7.12~ mongostore, uninitialized sessions, expiration&secret, env Var

노마드/유튜브

by hippo0207 2022. 8. 24. 19:11

본문

1. mongostore

  • session data >> cookie에 저장x, session Id만 저장됨
  • session data>> server-side에 저장됨
  • default server-side session storage  = MemoryStore (실존하는건 아님)
  • session store >> connect-mongo > MongoDB session store for Connect and Express written in Typescript. 
    • 서버 재시작해도 남아있음
    • npm i connect-mongo
    • import MongoStore from "connect-mongo";
  • session 의 옵션 : store
app.use(
  session({
    secret: "Hello!",
    resave: true,
    saveUninitialized: true,
    store: MongoStore.create({ mongoUrl: "mongodb://127.0.0.1:27017/wetube" }),
  })
);

>> session이 mongoDB에 저장됨

sessions생김 , 쿠삭

  • 아직 세션안만들어서 db.session.find({}) 하면 암것도없음
  • 세션 만드는 방법?  브라우저가 백엔드 방문할때 만들어짐 

2. uninitialized sessions

  • 위에서 복붙한 url >> 복붙하면 안좋다ㅇㅇ  따로만들기, secret 부분도 안보이도록 설정 필요함
  • resave &  saveUninitialized 의 차이점 
    • 쿠키삭제 & 새로고침 >> 새로운 쿠키 자동생성 & db에 저장됨  == 모든 방문자에게 쿠키생성, 세션만드는것
    • 그냥 구경만하러 온사람들에게도 쿠키, 세션만들고 db에 저장하는건?  안 좋 음 
    • 로그인한 사람의 세션만 저장하는게 좋을 것 
    • >> 이럴대 resave, saveUninitialized  > false로 
      • 세션이 새로 생성됐으나,  수정된적 없는 것=  초기화되지않은 것(Uninitialized) >> 저장x
      • 세션의 수정 >> only controller에서 수정함 >> 밑에처럼
req.session.loggedIn = true;
  req.session.user = user;

3. expiration&secret

  • cookie 의  property 
    1. secret
    2. domain : 쿠키만든 백엔드가 누구인가 알려줌 >> 해당 도메인에서 만든 쿠키만 브라우저로 옴
    3. path: url
    4. expires : 만료날짜 >> 지정안하면 session cookie로 지정됨 >> 브라우저가 프로그램닫거나 컴퓨터재시작시 > 쿠키사라짐
    5. max-age : 언제 세션만료되는가 >> 컴퓨터 계속 켜놔도 저날짜지나면 사라짐
app.use(
~~~
    cookie: {
      maxAge: 20000,
    },
  • mongoUrl, secret 보호하기 
    1. .env 파일 생성 & gitignore 에 .env 추가하기
    2. secret 은 암거나 대충쳐넣기 (객체명은 대문자로 해야함) 
COOKIE_SECRET=asjlfkjsdfijweo122jsdlfkjoi2
DB_URL=mongodb://127.0.0.1:27017/wetube
  • process.env 
app.use(
  session({
    secret: process.env.COOKIE_SECRET,    <    <    <
    resave: false,
    saveUninitialized: false,
    store: MongoStore.create({ mongoUrl: process.env.DB_URL }),    <    <
  })
);

4. env Var 

>> 위에서 설정한거 env에서 읽도록 설정하기 >> dotenv

 

dotenv

Loads environment variables from .env file. Latest version: 16.0.1, last published: 3 months ago. Start using dotenv in your project by running `npm i dotenv`. There are 29704 other projects in the npm registry using dotenv.

www.npmjs.com

  • npm i dotenv
  • 방법1. env 사용하는 모든곳 가장 빠른곳에 밑에코드 쳐넣기
require('dotenv').config()

 

  • 방법2. 제일빨리 시작하는 init.js 파일 젤상단에  a밑에코드 쳐넣기
import "dotenv/config";

'노마드 > 유튜브' 카테고리의 다른 글

ch8. User profile  (0) 2022.08.26
ch7.16~ github Login & Logout  (0) 2022.08.25
ch7.5~ login, sessions&cookies, logged in user  (0) 2022.08.23
ch7. User authentication  (0) 2022.08.23
ch6.25~ delete, search  (0) 2022.08.22

관련글 더보기

댓글 영역