# 7.13 Sessions: Uninitialized & resave

이원규·2022년 6월 27일
0

Itube

목록 보기
27/46
post-custom-banner

Session의 특성 알아보기

app.use(
    session({
        secret:"Hello!",
        resave: false,
        saveUninitalized: false,
        store: MongoStore.create({mongoUrl:"mongodb://127.0.0.1:27017/wetube"}),
}));

resave, saveUninitalized의 특징

  • resave?
    모든 request마다 기존에 있던 session에 아무런 변경사항이 없을 시에도
    그 session을 다시 저장하는 옵션입니다.
  • saveUninitalized
    saveUninitialized는 uninitialized(초기화 되지 않은) 상태의 session을 강제로 저
    장합니다. 따라서 아무 내용 없는 session이 계속해서 저장될 수 있습니다.

saveUninitalized & resave

우리가 session을 DB에 저장할 때, 사람이 아닌 게 오거나, 웹사이트를 구경만 하는 사람의 session을 저장하는 것은 낭비이다. 즉, 우리는 로그인 한 사람만 session을 저장해주는 게 좋다. 익명사용자까지 신경쓸 필요는 없다.
해결책: 모든 방문자에 대해서 쿠키를 주지 않는다. 나는 내가 기억하고 싶은 사용자에게만 쿠키를 줄 것임. 즉, 로그인 했을 시에만 쿠키를 줄 것임.

-> Session이 새로 만들어지고, 수정된 적이 없을 때, uninitialized(초기화 되지 않는 것)하는 것의 여부. 즉, 이게 뭘하는 거냐면, 세션을 수정할 때만 세션을 DB에 저장하고 쿠키를 넘겨주는 것임.
다른 말로 하자면, backend가 로그인한 사용자에게만 쿠키를 주도록 설정했다는 말임.(우리는 로그인 할 때 req.session.loggedIn = true로 수정되도록 usercontroller에서 설정해줬기 때문임.) 이렇게 되면 유저의 정보만 세션에 저장할 수 있음.

-> resave, saveUninitalized를 둘 다 false로 해야 변경사항이 있는 유저(로그인한 유저)의 세션만 저장할 수 있음.

authentication(인증)

session authentication

-> 쿠키를 이용해 세션 인증을 받음.

token authentication

세션과 토큰 인증방식의 차이
iOS, 안드로이드 앱은 쿠키를 갖지 않기 때문에 token을 이용해 세션 인증을 받음.

profile
github: https://github.com/WKlee0607
post-custom-banner

0개의 댓글