Sessions: 使用 FilesystemStore 时删除会话

创建于 2017-01-27  ·  3评论  ·  资料来源: gorilla/sessions

嗨,首先感谢这个包,它真的很容易使用。

问题

如果我理解正确,当为会话使用文件系统存储时,客户端获取的会话 cookie 仅包含会话的 ID(因为它不是 CookieStore)。 后端根据 http 请求从文件系统中检索会话并将其加载到内存中(或者一旦在内存中并保留以供后续请求使用)。

为什么没有从文件系统存储/内存中删除会话的功能?

我目前的情况如下; 当用户注销时,我希望删除会话:

  • 必须删除会话文件
  • 使用提供的会话 cookie 的下一个请求将无效,因为找不到匹配的会话

但是,现在只要我从不更改用于签署 cookie 的私钥,会话将永远有效。

我可以通过在会话对象上设置一个标志来指示会话是否仍然有效来解决这个问题,但这会让我不得不手动从文件系统存储中删除会话。

要求

是否可以添加像filesystemStore.RemoveSession(id string)这样的函数来让商店从文件系统和内存中加载的会话中清除会话?

documentation

最有用的评论

设置sess.MaxAge(-1)然后调用sess.Save将删除会话: https :

文档在这里: http :

保存将单个会话添加到响应中。

如果会话的 Options.MaxAge <= 0,则会话文件将从存储路径中删除。 通过此过程,它会强制执行正确的会话 cookie 处理,因此无需信任 Web 浏览器中的 cookie 管理。

希望澄清。

所有3条评论

设置sess.MaxAge(-1)然后调用sess.Save将删除会话: https :

文档在这里: http :

保存将单个会话添加到响应中。

如果会话的 Options.MaxAge <= 0,则会话文件将从存储路径中删除。 通过此过程,它会强制执行正确的会话 cookie 处理,因此无需信任 Web 浏览器中的 cookie 管理。

希望澄清。

关闭 - 如果您有任何问题,请重新打开!

想知道如何使用过时的会话文件处理这种情况,例如某些会话在浏览器私有模式下进行身份验证,后来显然不会返回注销并发出删除会话文件的信号,是否有任何推荐的方法来处理这种情况?

此页面是否有帮助?
0 / 5 - 0 等级