Установка Node.js Экспресс-время окончания сеанса в SessionStore вместо cookie

Все, что я могу найти в Express Session, истекает, когда вы устанавливаете файл cookie.

session.cookie.expires = null; // Browser session cookie  
session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie

Но дата истечения срока действия файлов cookie не "защищена" с помощью secret, так как это только настройки cookie, которыми управляет ваш браузер.

Как установить дату истечения срока действия сессии в хранилище сеансов? Поскольку теоретически, когда кто-то использует ваш компьютер, они могут "исправить" время истечения срока действия истекшего файла cookie и продолжить сеанс, если сеанс на стороне сервера также не истек в то же время, что и файл cookie.

Я не могу найти ничего о том, как это работает или как установить/изменить это.

Ответ 1

С промежуточным программным обеспечением Session в файл cookie на стороне клиента хранится только зашифрованный идентификатор сеанса. Истеченная дата сохраняется как req.session.cookie.expires в хранилище на стороне сервера. Таким образом, мы можем добавить пользовательскую середину, чтобы проверить, закончился ли текущий сеанс.

// ...
app.use(express.cookieParser());
app.use(express.session({secret:'yoursecret', cookie:{maxAge:6000}}));

app.use(function(req, res, next) {
  // if now() is after `req.session.cookie.expires`
  //   regenerate the session
  next();
});

// ...