Как cookie.maxAge влияет на время истечения сеанса?Это одно и то же? - PullRequest
0 голосов
/ 10 апреля 2019

Я новичок в 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 секунд. (Мне потребовалось время, чтобы сделать скриншот)

...