Jak zakończyć sesję w ExpressJS
Czuję, że to musi być zakopane gdzieś w dokumentacji, ale nie mogę tego znaleźć.
Jak zamknąć, zakończyć lub zabić (cokolwiek) sesję w ExpressJS?
7 answers
Express 4.X zaktualizowana odpowiedź
Obsługa sesji nie jest już wbudowana w Express. Ta odpowiedź odnosi się do standardowego modułu sesji: https://github.com/expressjs/session
Aby wyczyścić dane sesji, po prostu użyj:
req.session.destroy();
Dokumentacja jest trochę bezużyteczna. Pisze:
Niszczy sesję, usuwając req.sesji, zostanie ponownie wygenerowane następne żądanie.
req.session.destroy(function(err) { // cannot access session here })
To nie oznacza, że bieżąca sesja zostanie ponownie załadowany przy następnym żądaniu. Oznacza to, że czysta pusta sesja zostanie utworzona w Twoim sklepie sesji przy następnym żądaniu. (Prawdopodobnie identyfikator sesji się nie zmienia, ale tego nie testowałem.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-14 05:23:56
Nieważne, to req.session.destroy();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 05:43:36
Pytanie nie wyjaśniło, jakiego rodzaju sklep sesyjny był używany. Obie odpowiedzi wydają się być poprawne.
Dla sesji opartych na plikach cookie:
Od http://expressjs.com/api.html#cookieSession
req.session = null // Deletes the cookie.
Dla sesji opartych na Redis, etc:
req.session.destroy // Deletes the session in the database.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-26 06:32:33
Z http://expressjs.com/api.html#cookieSession
Aby wyczyścić plik cookie, po prostu Przypisz sesję Do null przed odpowiedzią:
req.session = null
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-15 08:25:59
Użycie req.session = null;
nie usunie instancji sesji. Najodpowiedniejszym rozwiązaniem byłoby req.session.destroy();
,
ale to jest zasadniczo opakowanie dla 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;
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-31 09:30:19
Użycie,
delete req.session.yoursessionname;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-06 11:44:37
Jak wspomniano w kilku miejscach, nie jestem w stanie uzyskać req.sesja.funkcja destroy () działa poprawnie.
To moja praca .. wygląda na to, że działa i nadal pozwala na req.flash do użyciareq.session = {};
Jeśli usuniesz lub ustawisz req.session = null; , wydaje się, że wtedy nie można użyć req.flash
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-28 23:41:33