Is there a way in Node.js Express / Connect to set a session to infinity?

I do it like this:

app.use(express.session({
                cookie:{domain:"."+settings.c.SITE_DOMAIN}, 
                secret:'abc',
                store: redis_store,
                }));

When I enter my redis and type TTL sess:..., it seems that there is an expiration date in this session.

How can I make sessions never expire? (For all). I also want cookies to never expire.

+5
source share
1 answer

As mentioned in the Connect guide on the session middleware page (Express uses Connect internally), you can specify the maxAge option on sessions:

  • cookie Session cookie settings, default {path: '/', httpOnly: true, maxAge: 14400000}

Example:

connect(
      connect.cookieParser()
    , connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})
    , connect.favicon()
    , function(req, res, next){
      var sess = req.session;
      if (sess.views) {
        res.setHeader('Content-Type', 'text/html');
        res.write('<p>views: ' + sess.views + '</p>');
        res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>');
        res.end();
        sess.views++;
      } else {
        sess.views = 1;
        res.end('welcome to the session demo. refresh!');
      }
    }
  ).listen(3000);

Note: maxAge is in milliseconds, for example, day = 86400000

+4
source

All Articles