我有一个关于会话的一般问题。当谈到这个问题时,我的经验并不是很丰富。我试过了:gorilla /会话在服务器重启之间持续存在?
NewRediStore (gopkg.in/boj/redistore.v1)
NewCookieStore
NewFileSystemStore
我的印象是,会话可能持续服务器重新启动,因此需要'商店'。当我的golang后端正在运行时,我可以设置新会话并为多个用户/浏览器检索它们。那里没有问题。
当我重新启动服务器时,我注意到所有会话访问结果都是session.IsNew == true
。 在Redis中,我可以看到重新启动后的所有会话密钥,甚至验证了会话结果中检索到正确的ID,但IsNew
仍然设置。
我想直觉地说,这是有道理的,因为内存中必须有一些地图导致IsNew
的设置,但我认为如果商店中的cookie密钥有任何命中,则不应设置IsNew
。我疯了吗?有什么容易的,我做错了吗?这是对如何使用会话的基本误解? 如果我需要包含代码或其他详细信息,请让我知道。
有趣。挖到redistore,我在代码中看到[this](https://github.com/boj/redistore/blob/v1.2/redistore.go#L242),并决定在那里打印一些东西。 'ok == true' **和**'err ==“gob:name未注册接口:”gitlab.com/droneprime/spectre.host/server/internal/handlers.User“”'这看起来很奇怪错误代码中的这一点?这似乎应该在我的代码? – droneprime
我解决了我的问题。当你放入东西时,你不仅需要用'encoding/gob'注册,而且当你尝试访问数据时也要注册。谢谢你鼓励我在图书馆代码中捅捅。我将在未来做到这一点:) – droneprime