我有一個關於會話的一般問題。當談到這個問題時,我的經驗並不是很豐富。我試過了: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