Установка 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();
});
// ...
Ответ 2
Я написал решение сегодня, поскольку проект нуждался в этом.
Вот он:
https://github.com/expressjs/session/issues/173
Там есть инструкции.