app.use(
session({
secret:"Hello!",
resave: false,
saveUninitalized: false,
store: MongoStore.create({mongoUrl:"mongodb://127.0.0.1:27017/wetube"}),
}));
우리가 session을 DB에 저장할 때, 사람이 아닌 게 오거나, 웹사이트를 구경만 하는 사람의 session을 저장하는 것은 낭비이다. 즉, 우리는 로그인 한 사람만 session을 저장해주는 게 좋다. 익명사용자까지 신경쓸 필요는 없다.
해결책: 모든 방문자에 대해서 쿠키를 주지 않는다. 나는 내가 기억하고 싶은 사용자에게만 쿠키를 줄 것임. 즉, 로그인 했을 시에만 쿠키를 줄 것임.
-> Session이 새로 만들어지고, 수정된 적이 없을 때, uninitialized(초기화 되지 않는 것)하는 것의 여부. 즉, 이게 뭘하는 거냐면, 세션을 수정할 때만 세션을 DB에 저장하고 쿠키를 넘겨주는 것임.
다른 말로 하자면, backend가 로그인한 사용자에게만 쿠키를 주도록 설정했다는 말임.(우리는 로그인 할 때 req.session.loggedIn = true로 수정되도록 usercontroller에서 설정해줬기 때문임.) 이렇게 되면 유저의 정보만 세션에 저장할 수 있음.
-> resave, saveUninitalized를 둘 다 false로 해야 변경사항이 있는 유저(로그인한 유저)의 세션만 저장할 수 있음.
-> 쿠키를 이용해 세션 인증을 받음.
세션과 토큰 인증방식의 차이
iOS, 안드로이드 앱은 쿠키를 갖지 않기 때문에 token을 이용해 세션 인증을 받음.