Как сбросить файл cookie, связанный с уже существующим экспресс-сеансом? - PullRequest
0 голосов
/ 04 октября 2019

Я использую сеансы Mongo для сохранения пользовательских данных (без логинов). Когда пользователь впервые входит в систему, я создаю новый сеанс на БД и устанавливаю cookie на клиенте, информация о сеансе теперь сохраняется в localStorage. Я хочу использовать один и тот же сеанс для каждого пользователя, поэтому его объект сеанса также хранит такие вещи, как «Последний просмотр», «Идентификатор сокета» и т. Д. Вещи, которые часто меняются.

Проблема заключается в том, что пользовательский клиент удаляет cookie(случайно) создается новый cookie + сеанс, поэтому все эти данные «исчезают». Мой вопрос: «Как мне установить новый файл cookie, который указывает на уже существующий сеанс»?

// Anytime there is a (re)connection save the socketID to the session

io.on('connection', function(socket: i.Socket) {

  socket.handshake.session!.lastSeen = new Date();
  socket.handshake.session!.socketID = socket.id;
  socket.handshake.session!.save((err: Error) => {
    if (err) {
      console.log('Error in saving session! => ', err);
    }  
  });
  // Now each session has it's socketID!
});

Спасибо за вашу помощь, мне нужно это. Вы также можете предложить другие способы, которыми я могу это сделать.

1 Ответ

0 голосов
/ 04 октября 2019

Как насчет проверки существующего сеанса пользователя при создании нового сеанса для пользователя? Если существует, используйте этот идентификатор сессии в файле cookie.

Но lastSeen, socketID звучит как логика приложения. Они могут храниться в базе данных вместе с пользовательскими данными.

...