Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session Gorilla会话-如何根据请求自动更新Cookie过期?_Session_Cookies_Go_Session Timeout_Gorilla - Fatal编程技术网

Session Gorilla会话-如何根据请求自动更新Cookie过期?

Session Gorilla会话-如何根据请求自动更新Cookie过期?,session,cookies,go,session-timeout,gorilla,Session,Cookies,Go,Session Timeout,Gorilla,我知道很多其他语言和web框架会在每次通过后端访问会话(或类似操作)时自动将cookie的过期时间更新为会话超时。我不相信Gorilla提供了这个实用程序 我只是考虑编写一些请求中间件,如果它检测到一个有效的会话,将延长cookie的生存期,但我想知道是否有更好的方法来做这件事。 更新cookie过期的最佳实践是什么,特别是当它们与Gorilla/Go相关时?您可以在现有会话存储(如CookieStore)的基础上实现自己的会话存储,但是在调用Save时,使用一些规则自动更新过期时间。如果设置c

我知道很多其他语言和web框架会在每次通过后端访问会话(或类似操作)时自动将cookie的过期时间更新为会话超时。我不相信Gorilla提供了这个实用程序

我只是考虑编写一些请求中间件,如果它检测到一个有效的会话,将延长cookie的生存期,但我想知道是否有更好的方法来做这件事。


更新cookie过期的最佳实践是什么,特别是当它们与Gorilla/Go相关时?

您可以在现有会话存储(如
CookieStore
)的基础上实现自己的会话存储,但是在调用
Save
时,使用一些规则自动更新过期时间。

如果设置cookie的Max Age参数,则不需要设置过期时间,除非需要支持不理解Max Age的旧浏览器

仅使用最大年龄意味着不需要在每次请求时更新它


设置规范:

正确,但最大年龄与cookie创建相关。因此,我想在这种情况下,我需要销毁旧会话,并创建一个新的、相同的会话?公平点。只要一个新的Set Cookie头就可以了,如果您使用相同的名称、路径、域等,则更新现有的Cookie头。但这会让您回到原来的问题。是的,我只是在登录时在会话上设置了一个“创建的”Unix时间戳。然后,我编写了请求中间件,它将设置
session.Options.MaxAge=time.Now().Unix()-session.Values[“created”](int64)+sessionStore.SessionLengthSeconds
。我还必须确保在保存会话设置“Set Cookie”头时生成任何响应之前,该中间件将运行。