Как я могу поддерживать сеансы пользователей в течение неопределенного времени? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложения Nodejs, ReactJS и React Native, приложение MERN развернуто на Heroku с использованием бесплатных динамометров.Время сеанса автоматически истекает через некоторое время.Я хочу сохранить сеанс навсегда без истечения срока его действия.

Я не установил expiry time или MaxAge во время инициализации сеанса:

app.use(session({
  secret: 'thesecret',
  saveUninitialized: false,
  resave: false
}))

app.use(passport.initialize());
app.use(passport.session());

Я ожидаю сохранения сеансанавсегда в моем приложении ReactJS и React Native.Как я могу сделать это на Heroku?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Сохраняя сеанс в базе данных mongodb, мы можем поддерживать непрерывный сеанс в нашем приложении nodeJS.

var MongoDBStore = require('connect-mongodb-session')(session);
var store = new MongoDBStore({
uri: process.env.MONGODB_URI,
  collection: 'mySessions'
});

// Catch errors
store.on('error', function(error) {
  console.log(error);
});
app.use(session({
  secret: 'thesecret',
  saveUninitialized: false,
  resave: false,
  cookie: {expires: new Date(1586323351000),maxAge:31536000000},
  store: store,
}))
0 голосов
/ 03 апреля 2019

Не похоже, что вы настроили store, что означает вы используете значение по умолчанию MemoryStore:

Предупреждение По умолчанию хранилище сеансов на стороне сервера MemoryStore является специально , не предназначенным для производственной среды.В большинстве случаев он будет пропускать память, не масштабируется после одного процесса и предназначен для отладки и разработки.

Список хранилищ см. В совместимых хранилищах сеансов .

Heroku dynos частый перезапуск , по крайней мере, один раз в день, для поддержания работоспособности приложений и инфраструктуры, делая хранилища в памяти непрактичными даже без предыдущего предупреждения.

You 'Вам нужно будет выбрать новое хранилище сеансов и настроить его.Файловая система Heroku эфемерна , поэтому, пожалуйста, избегайте всего, что хранит ее данные на локальном диске.Вероятно, имеет смысл выбрать тот, который использует хранилище данных , указанное среди аддонов Heroku .Один из бэкэндов PostgreSQL может быть хорошим выбором (у вас, вероятно, уже есть база данных Heroku Postgres ), но есть лотов опций.

...