Задать вопрос
@vladislav_nik

Почему сессия в Node.js быстро сбрасывается?

Сессия устанавливается после авторизации. Если попереключаться по ссылкам внутри сайта, все работает нормально. Стоит оставить вкладку неактивной, через 5-10 минут сессия сбрасывается.
Код конфигурации сессии:

const session = require('express-session');

app.use(session({
    secret: 'you secret key',
    saveUninitialized: false,
    resave: false,
    cookie: {
        maxAge: 30 * 24 * 60 * 60 * 1000
    }
}));


С параметрами saveUninitialized и resave по-разному игрался, пробовал в разных комбинациях ставить true/false. Не помогло. За время жизни сессии должно отвечать свойство maxAge, я его поставил в 1 месяц, но она все равно живет 5-10 минут.

Возможно мне сейчас будут советовать в качестве хранилища сессии - Redis, но я хочу узнать как исправить ошибку именно в данной конфигурации, без использования хранилищ вроде Redis и MongoDB.

Поскажите еще как генерировать ключ для поля secret.
  • Вопрос задан
  • 148 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
FinGanapre
@FinGanapre
secret пробрасывается через переменную окружения. Ваша задача создать файл .env и прописать туда необходимые переменные (коннект к бд, секретный ключ, порт, хост...). Чтобы считать файл, используйте dotenv. Для этого создайте папку config к примеру, в ней файл index.js в котором пропишите экспортируемый объект с необходимым конфигом. Этот объект вы будете использовать для доступа к переменным окружения в других модулях. При подключении библиотеки лучше указать путь к файлу .env полностью (__dirname ...).
Файл .env не заливается в репозиторий, укажите его в .gitignore
Если вы про генерацию ключа как последовательности символов, то любой генератор паролей как вариант. Кол-во символов побольше и поехали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы