Olá, em primeiro lugar, obrigado por este pacote, é muito fácil de usar.
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:
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.
É 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?
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 ?
Comentários muito úteis
Definir
sess.MaxAge(-1)
e, em seguida, chamarsess.Save
excluirá a sessão: https://github.com/gorilla/sessions/blob/master/store.go#L213 -L223Docs aqui: http://www.gorillatoolkit.org/pkg/sessions#FilesystemStore.Save
Espero que isso esclareça.