상세 컨텐츠

본문 제목

express-session 패키지의 resave, saveUninitialized 옵션

프레임워크+라이브러리/Express

by moonionn 2020. 9. 27. 08:09

본문

express-session은

클라이언트와 서버간에 session을 생성,응용할 때 사용하는 모듈입니다.

보통 아래의 형식같은 미들웨어로 쓰입니다.

여기서 resave와 saveUninitialized의 옵션은 무얼 의미하며, 어떤 차이가 있을까요.

app.use(session({
  secret: "my secret", 
  resave: false, 
  saveUninitialized: false
}));

 

 

resave: false

resave?

모든 request마다 기존에 있던 session에 아무런 변경사항이 없을 시에도

그 session을 다시 저장하는 옵션입니다.

(매 request 마다 세션을 계속 다시 저장하는 것)

 

 

default: true (deprecated, 2020-October 기준)

어쨌거나 저쨌거나 많은 경우 false를 사용하기 때문에

기본 옵션인 true는 deprecated 상태입니다.

 

 

false로 해놓는 경우는?

=> 변경사항도 없는 session이 매번 다시 저장되는 걸 막아 작동 효율을 높입니다.

=> 동시에 두 가지 request를 처리할때, 한 쪽에서의 session 변경사항과

     다른 한 쪽의 session 변경사항의 충돌을 막습니다.

=> 거의 대부분의 경우 false로 설정을 해줍니다.

 

 

true로 해놓는 경우는?

=> 세션을 저장하는 store 측에서 touch() 메소드를 사용하지 않으면 true로 해놓습니다.

 

잠깐, touch() 메소드가 뭔가요?

=> maxAge 옵션을 업데이트 해주는 기능입니다. 그래서 세션이 유지되는 걸 도와주죠.

     보통 자동으로 실행되는 기능이지만,

     혹여 session을 저장하는 store의 종류에 따라 이 기능을 이용하지 않을 수 있습니다.

     (하지만 거의 대부분의 store가 -누군가는 모든 store가 그렇다고 말하기도 합니다.- touch 메소드를 씁니다.)

 

 

 

saveUninitialized: false

uninitialized?

request가 들어오면 해당 request에서

새로 생성된 session에 아무런 작업이 이루어지지 않은 상황을 말합니다.

 

 

default: true (deprecated, 2020-October 기준)

saveUninitialized는 uninitialized 상태의 session을 강제로 저장합니다.

따라서 아무 내용 없는 session이 계속해서 저장될 수 있습니다.

 

 

false로 해놓는 경우는?

=> empty session obj가 쌓이는 걸 방지해 서버 스토리지를 아낄 수 있습니다.

=> 쿠키 사용 정책을 준수하기 위해 false를 쓰기도 합니다.

 

 

true로 해놓는 경우는?

=> 클라이언트의 서버 방문 횟수에 따라 등급을 달리 하고 싶을 때 쓸 수 있습니다.

관련글 더보기

댓글 영역