Как завершить сеанс в ExpressJS



Я чувствую, что это должен быть похоронен где-то в документации, но я не могу найти его.



Как вы закрываете или заканчиваете или убиваете (что угодно) сеанс в ExpressJS?

710   7  

7 ответов:

Экспресс-4.х обновлен ответ

обработка сеанса больше не встроена в Express. Этот ответ относится к стандартному модулю сеанса:https://github.com/expressjs/session

чтобы очистить данные сеанса, просто используйте:

req.session.destroy();

документация немного бесполезна на этом. Он говорит:

уничтожает сеанс, удаляя req.сессия, будет повторно сгенерирован следующий запрос. req.session.destroy(function(err) { // cannot access session here })

этот делает не означает, что текущая сессия будет повторно загружена при следующем запросе. Это означает, что чистый пустой сеанс будет создан в вашем хранилище сеансов при следующем запросе. (Предположительно идентификатор сеанса не меняется, но я не проверял это.)

неважно, это req.session.destroy();

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

для сеансов на основе файлов 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;
};

использовать

delete req.session.yoursessionname;

Как уже упоминалось в нескольких местах, я также не могу получить req.сессия.функция destroy () для правильной работы.

Это моя работа вокруг .. кажется, чтобы сделать трюк, и по-прежнему позволяет req.вспышка для использования

req.session = {};

Если вы удалите или установите req.session = null;, кажется, тогда вы не можете использовать req.вспышка

Comments

    Ничего не найдено.