14

The session middleware for Express provides several configurable options.

resave: 'Forces the session to be saved back to the session store, even if the session was never modified during the request.'

saveUninitialized: 'Forces a session that is "uninitialized" to be saved to the store. A session is uninitialized when it is new but not modified.'

It appears that both options are for saving unmodified sessions. What's the difference?

Suraj Jain
  • 3,857
  • 23
  • 38
Cannoliopsida
  • 2,779
  • 4
  • 29
  • 61
  • 1
    Possible duplicate of [When use saveUninitialized and resave in express-session](https://stackoverflow.com/questions/40381401/when-use-saveuninitialized-and-resave-in-express-session) – Sunil Garg Dec 05 '17 at 06:45

2 Answers2

11

I thought I would start off with a basic answer, my bit of understanding so far, and improve it together. Important question been 'dead' for too long.

From this I understand the difference is:

(Unmodified 'state' is different to uninitialized state)

resave: For any request made

  • Nothing in the session needs to change (no login etc).
  • Change of session required (logged in)

"Forces session to be saved even when unmodified"

saveUninitialized: Is about the state of the session, if its still in the uninitialized state.

  • Not modified only, nothing in the session needs to change (no login etc).

"Forces a session that is "uninitialized" to be saved to the store. A session is uninitialized when it is new but not modified."

cfl
  • 911
  • 12
  • 29
3

Basically, a session is saved in the store only when it is modified; if you add, delete or edit a session cookie (eg: req.session.test = 'some value'). If you want all the sessions to be saved in store, even if they don't have any modifications go with saveUninitialized: true.

Now, re-saving also happens only when session variables/cookies changes. If you want to save then always go ahead with resave: true

Sunil Garg
  • 10,122
  • 12
  • 92
  • 133
sreesreenu
  • 847
  • 2
  • 10
  • 20
  • What if saveUninitialized value is "True" but a session is not modified at all. I know that it would store the session in the database but would a session cookie still get set? – Neel Patel Feb 18 '21 at 18:06