Ich habe eine allgemeine Frage zu Sitzungen. Ich bin nicht sehr gewürzt, wenn es um dieses Thema geht. Ich habe versucht, mit:Gorilla/Sitzungen persistent zwischen Serverneustarts?
NewRediStore (gopkg.in/boj/redistore.v1)
NewCookieStore
NewFileSystemStore
Ich hatte den Eindruck, dass Sitzungen zwischen Server neu gestartet wird, daher die Notwendigkeit für eine ‚Store‘ dauern könnte. Während mein Golfang-Backend läuft, kann ich neue Sitzungen einrichten und für mehrere Benutzer/Browser abrufen. Keine Probleme dort.
Wenn ich meinen Server neu starte, merke ich, dass alle Sitzung Zugriff in session.IsNew == true
. In Redis kann ich alle Sitzungsschlüssel nach dem Neustart sehen, und verifiziert sogar, dass .Get
Sitzung die richtige ID abgerufen, aber IsNew
ist immer noch festgelegt.
ich intuitiv erraten, ist dies sinnvoll, da es muss eine Karte im Speicher sein, der auf die Einstellung von IsNew
führt aber ich würde denken, dass, wenn es ein Treffer für den Cookie erzeugten Schlüssel im Laden ist, IsNew
nicht eingestellt werden soll. Werde ich verrückt? Gibt es etwas Leichtes, dass ich falsch mache? Ist das ein grundlegendes Missverständnis, wie man Sitzungen benutzt? Bitte lassen Sie mich wissen, wenn ich Code oder zusätzliche Details hinzufügen muss.
Interessant. Ich habe in Redistore hineingeschaut und dabei [https://github.com/boj/redistore/blob/v1.2/redistore.go#L242] im Code gesehen und beschlossen, dort ein paar Sachen zu drucken. 'ok == true' ** und **' err == "gob: Name nicht für die Schnittstelle registriert:" gitlab.com/droneprime/spectre.host/server/internal/handlers.User "" 'Das scheint seltsam zu sein Fehler an dieser Stelle im Code zu bekommen? Es scheint, dass das in meinem Code sein sollte? – droneprime
Ich habe mein Problem gelöst. Sie müssen sich nicht nur mit "encoding/gob" registrieren, wenn Sie Daten eingeben, sondern auch, wenn Sie versuchen, auf Daten zuzugreifen. Danke, dass Sie mich ermutigt haben, den Code der Bibliothek zu lesen. Das werde ich in Zukunft zuerst machen :) – droneprime