Custom way of session rolling

Open
#1,094 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Active
Tech stack
express, javascript, node.js, postgresql
Domain
backend, databases

Research direction

No repository file or test is named; start by reproducing the middleware with the connect-pg-simple store and trace whether req.session.touch() reaches the store. Done means identifying why the expiration is not extended and determining the compatible behavior for this session setup.

Written by the indexing model from the issue text.

Description

question

My goal is to extend the session expiration when 2/3 of its duration has passed instead of doing this on every request.

For that, I've kept the rolling option disabled and I've written a custom middleware as follows:

export const sessionTouchMiddleware = (req: Request, _res: Response, next: NextFunction) => {
  if (!req.session.userId || !req.session.cookie) {
    return next()
  }

  const { originalMaxAge, expires } = req.session.cookie

  if (!originalMaxAge || !expires) {
    return next()
  }

  const sessionStart = expires.getTime() - originalMaxAge
  const elapsedMs = Date.now() - sessionStart

  // Touch the session if two-thirds of its lifespan elapsed
  if (elapsedMs >= originalMaxAge * (2 / 3)) {
    req.session.cookie.maxAge = originalMaxAge
    req.session.touch()
  }

  next()
}

The above has no effect. I'm using connect-pg-simple store. Any help is appreciated.

Dominant language
JavaScript
Stars
6.4k
Forks
1k
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from expressjs/session

All issues in expressjs/session

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.