import session from "express-session";
...
app.use(
session({
secret: "hello",
resave: true,
saveUninitialized: true,
})
);
req.headers
에서 확인가능저장된 세션 확인
app.use((req, res, next) => {
req.sessionStore.all((err, sessions) => {
console.log(sessions);
next();
});
});
현재는 세션id가 메모리에 저장되어서 서버 리부트하면 리셋되는 문제가 있음.
→ DB 저장 필요
브라우저에게 준 세션 ID를 다시 요청할 때 보내오기 때문에 세션 오브젝트에 어떤 값을 추가해놓으면 그게 계속 유지됨.
app.use(
session({
...
cookie: {
maxAge: 20000, // ms
},
})
);
express-session으로 받은 session 데이터는 기본적으로 메모리에 적장됨. 즉 재실행 시 없어짐.
이를 해결하려면 db에 저장해야함.
express-session 미들웨어로 사용할 때 store 옵션으로 저장하는 곳을 바꿀 수 있음.
여러 방식이 있는데 그 중 하나가 connect-mongo 라는 모듈 (MongoStore 라고 부르는거 같음)
import MongoStore from "connect-mongo";
...
app.use(
session({
...
store: MongoStore.create({ mongoUrl: "mongodb://127.0.0.1:27017/wetube" }),
})
);
웹 사이트에 방문하는 사람마다 세션 생성 시 db에 너무 많은 데이터가 쌓인다.
saveUninitialized: false
resave: false
app.use(
session({
...
resave: false,
saveUninitialized: false,
})
);