Экспресс-сессия: завершить сессию на вкладке / закрыть

Мне нужно прекратить сеанс пользователя или выйти из системы, когда они закрывают браузер или вкладку. Ниже приведен код, реализованный для поддержки сеанса:

app.use(session({
  store: new RedisStore({
    url: REDIS_CONNECTION_URL,
  }),
  secret: 'COOKIE_SECRET', 
  name: 'COOKIE_NAME',
  resave: true, 
  saveUninitialized: false,
  rolling: true,
  cookie: {
    path: '/',
    httpOnly: true,
    maxAge: 'COOKIE_TIMEOUT',
  },
}));

Я попытался установить для cookie.expires значение true, но это не помогает.

1 ответ

Вы должны обработчик onclose событие пользователя клиента, затем вызовите http-запрос, чтобы уничтожить сеанс клиента на стороне сервера.

Сторона клиента:

$(window).unload(function () { 
  $.get('/session/destroy');
});

Сторона сервера:

app.get('/session/destroy', function(req, res) {
    req.session.destroy();
    res.status(200).send('ok');
});
Другие вопросы по тегам