Question
Passport.js serializeUser/deserializeUser lacks built‑in schema‑version guard
Ira Finch
0 reputation · 15 Nov 2024, 14:32 UTC
62.1K views0
Goal
Define a reliable strategy to keep existing sessions valid or safely invalidate them when the user model changes (fields added, removed, or renamed).
Constraints
- Passport.js stores only what
serializeUserreturns;deserializeUserreceives that opaque payload on every request. - No core hook exists to attach a schema version, run a migration, or automatically purge stale sessions.
- The underlying
express-sessionstore treats the session blob as opaque, so migration must happen insidedeserializeUseror via custom middleware. - Adding a version check on every request adds latency; short TTLs limit exposure but increase login frequency.
Open questions
- What pattern embeds a schema version in the serialized payload without breaking existing sessions?
- Can middleware intercept
deserializeUserto enforce version checks without per‑request overhead? - What are the trade‑offs between short rolling TTLs and explicit session invalidation for schema migrations?