Sessions: Remover uma sessão quando FilesystemStore é usado

Criado em 27 jan. 2017  ·  3Comentários  ·  Fonte: gorilla/sessions

Olá, em primeiro lugar, obrigado por este pacote, é muito fácil de usar.

Problema

Se bem entendi, ao usar o armazenamento do sistema de arquivos para as sessões, os cookies de sessão que o cliente obtém contêm apenas os IDs das sessões (já que não é um CookieStore). O backend recupera em uma solicitação http a sessão do sistema de arquivos e a carrega na memória (ou uma vez na memória e a mantém para solicitações subsequentes).

Por que não existe uma função para remover sessões do armazenamento / na memória do sistema de arquivos?

Meu cenário atual é o seguinte; Quando um usuário se desconecta, quero que a sessão seja excluída:

  • o arquivo da sessão deve ser excluído
  • a próxima solicitação com o cookie de sessão fornecido será inválida, pois nenhuma sessão correspondente pode ser encontrada

No entanto, agora, desde que eu nunca altere a chave privada para assinar cookies, a sessão será válida para sempre.

Eu poderia contornar esse problema tendo um sinalizador no objeto de sessão indicando se a sessão ainda é válida, mas isso me deixaria com a necessidade de remover manualmente as sessões do armazenamento do sistema de arquivos.

Solicitar

É possível adicionar uma função como filesystemStore.RemoveSession(id string) para deixar o armazenamento limpar a sessão do sistema de arquivos e sessões carregadas na memória?

documentation

Comentários muito úteis

Definir sess.MaxAge(-1) e, em seguida, chamar sess.Save excluirá a sessão: https://github.com/gorilla/sessions/blob/master/store.go#L213 -L223

Docs aqui: http://www.gorillatoolkit.org/pkg/sessions#FilesystemStore.Save

Salvar adiciona uma única sessão à resposta.

Se o Options.MaxAge da sessão for <= 0, o arquivo da sessão será excluído do caminho de armazenamento. Com esse processo, ele reforça o tratamento adequado dos cookies da sessão, de forma que não haja necessidade de confiar no gerenciamento de cookies no navegador da web.

Espero que isso esclareça.

Todos 3 comentários

Definir sess.MaxAge(-1) e, em seguida, chamar sess.Save excluirá a sessão: https://github.com/gorilla/sessions/blob/master/store.go#L213 -L223

Docs aqui: http://www.gorillatoolkit.org/pkg/sessions#FilesystemStore.Save

Salvar adiciona uma única sessão à resposta.

Se o Options.MaxAge da sessão for <= 0, o arquivo da sessão será excluído do caminho de armazenamento. Com esse processo, ele reforça o tratamento adequado dos cookies da sessão, de forma que não haja necessidade de confiar no gerenciamento de cookies no navegador da web.

Espero que isso esclareça.

Encerramento - por favor, reabra se você tiver alguma dúvida!

Querendo saber como lidar com o caso com arquivos de sessão obsoletos, por exemplo, alguma sessão é autenticada no modo privado do navegador e mais tarde, obviamente, não voltaria para fazer o logout e daria um sinal para a remoção do arquivo de sessão, há alguma maneira recomendada de lidar com tal caso ?

Esta página foi útil?
0 / 5 - 0 avaliações