Node js создает разные идентификаторы сеанса для каждого запроса

Использование экспресс-сессии и хранение сессии в файлах. Однако каждый запрос создает новый идентификатор сеанса и создается новый файл.

Вот код, который я использую для создания сеанса.

app.use(session({ secret: 'keyboard cat',
  resave: false,store: new FSStore(options),
  saveUninitialized: false , 
  cookie: { maxAge: 1000,secure: false,httpOnly: true }
}))

Однако я хочу, чтобы он создавал один идентификатор сеанса для каждого пользователя или до истечения срока действия сеанса.


person Kishan Rajdev    schedule 03.09.2015    source источник
comment
Вы получили ответ на это? У меня тоже такой же вопрос....   -  person timpham    schedule 07.03.2016
comment
@Flash, вероятно, потому что maxAge составляет 1000 (1 с), вы получаете новый идентификатор сеанса для каждого запроса.   -  person actor203    schedule 03.05.2016
comment
Я столкнулся с той же проблемой, но мой maxAge составляет 24 часа, и он все еще создает новый идентификатор сеанса для каждого запроса.   -  person Alan Donizete    schedule 28.01.2017
comment
Столкнувшись с той же проблемой, и maxAge также правильно установлен. Кто-нибудь может помочь   -  person Pratik    schedule 26.01.2019


Ответы (1)


Моя проблема была с MaxAge, который я установил на 1000 миллисекунд, т.е. 1 секунду. Поэтому он каждый раз создавал новый идентификатор сеанса. Поставил на 1 час, работает нормально.

Вот полный код

var express = require('express');
var app = express();
var session = require('express-session');
var FileStore = require('session-file-store')(session);

app.use(session({ secret: 'keyboard cat',
    resave: false,
    store: new FileStore,
    saveUninitialized: false ,
    cookie: { maxAge: 3600000,secure: false, httpOnly: true }
  })
);

app.get('/', function (req, res) {
  if (req.session.views) {
    req.session.views++;
    res.setHeader('Content-Type', 'text/html');
    res.write('<p>views: ' + req.session.views + '</p>');
    res.end();
  } else {
    req.session.views = 1;
    res.end('Welcome to the file session demo. Refresh page!');
  }
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});
person Kishan Rajdev    schedule 05.07.2017