Я новичок в NodeJS. Недавно я решил использовать MySQL DB для хранения моих сессий (по умолчанию - memoryStorage). Теперь я был немного озадачен тем, как время истечения сеанса зависит от атрибута maxage файлов cookie. Устанавливает ли атрибут cookie maxage также время истечения сеанса?
Я использую экспресс-сессию и использую экспресс-mysql-сессию для реализации хранилища для сессии. Я делаю все это на локальном хосте.
Есть 2 места, где, я думаю, я могу установить время истечения сеанса:
1.В конфигурации для MysqlStore экспресс-mysql-сессии имя параметра - время истечения.
2. При настройке сеанса:
app.use(session({
secret: 'My Super Secret',
resave: false,
cookie: {maxAge: 60000}
}))
Я удалил его из всех мест (не использовал maxAge, не указано время истечения): и проверил сеанс в БД:
Устанавливает время истечения сеанса на 1 день == 86400 сек. время истечения срока действия cookie: null
Теперь я устанавливаю только maxAge для cookie:
app.use(session({
secret: 'My Super Secret',
resave: false,
store: sessionStore,
saveUninitialized: false,
cookie: {maxAge: 60000}
}));
Но на этот раз мое время истечения сеанса также было установлено на 60000 миллисекунд. Зачем?
Я прочитал read.me в экспресс-сессии, который не говорит мне, как мне установить maxAge для сессии. Это объясняет это о cookie maxAge.
Вот что я думаю:
Устанавливает время истечения сеанса из последнего из 2 мест.
Мой вопрос:
Устанавливает ли cookie куки maxAge также устанавливает время истечения сеанса. Это одно и то же? Я считаю, что они разные, так как сессия на стороне сервера, cookie на стороне клиента. Так что их срок годности должен быть другим. Правильно?
И, наконец, как я могу установить время истечения сеанса и время истечения срока действия куки, отличные друг от друга.
const config = {
"host": "localhost",
"user": "root",
"password": "root",
"database" : "Test",
"expiration": 86400000,
"clearExpired": true,
"checkExpirationInterval": 10000,
}
const sessionStore = new MySQLStore(config);
//session set up
app.use(session({
secret: 'My Super Secret',
resave: false,
store: sessionStore,
saveUninitialized: false,
cookie: {maxAge: 60000}
}));
Фрагмент кода моего сервера. Js
Запись в БД для созданного сеанса: см. Время истечения секунд, прошедших с начала эпохи.
Текущее время в эпоху. Это примерно на 40 секунд меньше времени истечения сеанса, что означает, что время истечения сеанса было 60 секунд. (Мне потребовалось время, чтобы сделать скриншот)