Node + Экспресс-срок окончания сеанса?
У меня есть приложение в экспресс, и у меня есть форма для входа. Мне нужно, чтобы сеансы длились 1 месяц, я устанавливаю maxAge в месяц в миллисекундах.
Я оставил два компьютера и вошел в систему в течение 24 часов, и когда я вернулся, оба были выведены из системы.
Как мне исправить это/добиться того, что я пытаюсь сделать?
Спасибо.
Ответы
Ответ 1
Вы можете использовать атрибут expires вместо maxAge. В качестве значения объекта Date объект принимает значение. Кроме того, проверьте сеанс cookie exipres на клиенте после их установки. Возможно, сеанс завершен сервером (например, перезапуск memcached).
Пример кода:
app.use(express.session(
{ secret: "secret", store: new MemoryStore(), expires: new Date(Date.now() + (30 * 86400 * 1000))
}));
но
app.use(express.session(
{ secret: "secret", store: new MemoryStore(), maxAge: Date.now() + (30 * 86400 * 1000)
}));
отлично работает и для меня.
Ответ 2
maxAge
означает продолжительность сеанса в мс; expires
означает, когда сессия истечет, то есть: объект даты
var hour = 3600000
req.session.cookie.expires = new Date(Date.now() + hour)
или же
var hour = 3600000
req.session.cookie.maxAge = hour
Документация
Ответ 3
app.use(express.session({
secret : 'sdfsdSDFD5sf4rt4egrt4drgsdFSD4e5',
store : new storage({ client : conn, cleanup: false }),
cookie : { maxAge : new Date(Date.now() + (60 * 1000 * 30)) }
}));
Ответ 4
Документация не рекомендует напрямую устанавливать cookie.expires. Вместо этого установите cookie.maxAge напрямую.
Экспресс-сессия - cookie.expires
Ответ 5
Принятый ответ Вадима Барышева ошибочен, по крайней мере, в последних реализациях экспресс-сессии. Когда приложение запускается, вы создаете реализацию сеанса и устанавливаете максимальный возраст. Что касается ответа с использованием истечения срока действия, то это не рекомендуется, придерживайтесь maxAge.
Это означает, что пример maxAge как написанный истекает через каждые один сеанс через месяц после запуска сервера, и каждый сеанс, созданный в будущем, будет немедленно истек. До тех пор, пока сервер не будет перезапущен, не будет никаких действительных сеансов.
Вместо передачи объекта date просто передайте количество миллисекунд в свойство maxAge, например:
app.use(
session({
...,
cookie: {
maxAge: 30 * 24 * 60 * 60 * 1000
}
})
);