7 ответов:
Экспресс-4.х обновлен ответ
обработка сеанса больше не встроена в Express. Этот ответ относится к стандартному модулю сеанса:https://github.com/expressjs/session
чтобы очистить данные сеанса, просто используйте:
req.session.destroy();документация немного бесполезна на этом. Он говорит:
уничтожает сеанс, удаляя req.сессия, будет повторно сгенерирован следующий запрос.
req.session.destroy(function(err) { // cannot access session here })этот делает не означает, что текущая сессия будет повторно загружена при следующем запросе. Это означает, что чистый пустой сеанс будет создан в вашем хранилище сеансов при следующем запросе. (Предположительно идентификатор сеанса не меняется, но я не проверял это.)
вопрос не уточнил, какой тип хранилища сеансов используется. Оба ответа кажутся правильными.
для сеансов на основе файлов cookie:
от http://expressjs.com/api.html#cookieSession
req.session = null // Deletes the cookie.для сеансов Redis и т. д.:
req.session.destroy // Deletes the session in the database.
от http://expressjs.com/api.html#cookieSession
чтобы очистить cookie, просто назначьте сеанс null перед ответом:
req.session = null
используя
req.session = null;, фактически не удаляет экземпляр сеанса. Наиболее правильным решением было быreq.session.destroy();, но это по сути обертка дляdelete req.session;.https://github.com/expressjs/session/blob/master/session/session.js
Session.prototype.destroy = function(fn){ delete this.req.session; this.req.sessionStore.destroy(this.id, fn); return this; };
Как уже упоминалось в нескольких местах, я также не могу получить req.сессия.функция destroy () для правильной работы.
Это моя работа вокруг .. кажется, чтобы сделать трюк, и по-прежнему позволяет req.вспышка для использования
req.session = {};Если вы удалите или установите req.session = null;, кажется, тогда вы не можете использовать req.вспышка
Comments