Acho que isso deve estar enterrado em algum lugar da documentação, mas não consigo encontrar.
Como você fecha, encerra ou mata (seja o que for) uma sessão no ExpressJS?
O tratamento de sessão não está mais embutido no Express. Esta resposta se refere ao módulo de sessão padrão: https://github.com/expressjs/session
Para limpar os dados da sessão, basta usar:
req.session.destroy();
A documentação é um pouco inútil nisso. Diz:
Destrói a sessão, removendo req.session, será gerado novamente na próxima solicitação.
req.session.destroy(function(err) { // cannot access session here })
Isso não significa que a sessão atual será recarregada na próxima solicitação. Isso significa que uma sessão limpa e vazia será criada em seu armazenamento de sessão na próxima solicitação. (Presumivelmente, o ID da sessão não está mudando, mas não testei isso.)
Deixa pra lá, é
req.session.destroy();
fonte
req.session.destroy();
como acidghost.A pergunta não esclareceu que tipo de armazenamento de sessão estava sendo usado. Ambas as respostas parecem estar corretas.
Para sessões baseadas em cookies:
De http://expressjs.com/api.html#cookieSession
Para sessões baseadas em Redis, etc:
fonte
De http://expressjs.com/api.html#cookieSession
Para limpar um cookie, basta atribuir a sessão a nulo antes de responder:
fonte
usar,
fonte
Usar
req.session = null;
, não excluirá realmente a instância da sessão. A solução mais adequada seriareq.session.destroy();
, mas este é essencialmente um invólucro paradelete req.session;
.https://github.com/expressjs/session/blob/master/session/session.js
fonte
Session.destroy (callback)
↓ Caminho seguro ↓ ✅
↓ Caminho inseguro ↓ ❌
fonte
O acima não funcionou para mim, então eu fiz isso.
Ao definir a expiração do cookie para a hora atual, a sessão expirou sozinha.
fonte
Conforme mencionado em vários lugares, também não consigo fazer a função req.session.destroy () funcionar corretamente.
Esta é a minha solução ... parece funcionar, e ainda permite que req.flash seja usado
Se você excluir ou definir req.session = null; , parece que você não pode usar req.flash
fonte