В Node.js Express / Connect есть ли способ установить сессию в бесконечность? - PullRequest
5 голосов
/ 21 января 2012

Я делаю это так:

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

Когда я вхожу в свой Redis и набираю TTL sess:..., кажется, что в этом сеансе истекает срок действия.

Какя могу сделать сеансы никогда не истекает?(За все).Я также хочу, чтобы срок действия файлов cookie не истек.

1 Ответ

4 голосов
/ 21 января 2012

Как упомянуто в руководстве Connect на странице промежуточного программного обеспечения сеанса (Express использует Connect для внутреннего использования), вы можете указать параметр maxAge для сеансов:

  • Сеанс cookieнастройки cookie, по умолчанию {path: '/', httpOnly: true, maxAge: 14400000}

Пример:

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);

Примечание: maxAge в миллисекундахтак например день = 86400000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...