Heim >Backend-Entwicklung >Golang >Warum werden meine Sitzungsvariablen mit Gorilla Sessions nicht beibehalten?
In Ihrer Anfrage um Unterstützung bei der Sitzungsverwaltung mithilfe von Gorilla Sessions haben Sie ein Problem beschrieben, bei dem Sitzungswerte nicht über alle Anfragen hinweg beibehalten wurden .
Ein potenzielles Problem liegt im Pfad, den Sie für den Sitzungsspeicher festlegen. Indem Sie den Pfad auf /loginSession festlegen, beschränken Sie die Gültigkeit der Sitzung auf diesen bestimmten Pfad. Um sicherzustellen, dass Sitzungen über alle Pfade hinweg konsistent sind, sollten Sie den Pfad stattdessen auf / setzen:
store.Options = &sessions.Options{ Domain: "localhost", Path: "/", MaxAge: 3600 * 8, HttpOnly: true, }
Ein weiterer zu berücksichtigender Punkt ist die Art und Weise, wie Sie Sitzungswerte überprüfen. Anstatt session.Values["email"] == nil zu verwenden, sollten Sie den Wert in eine Zeichenfolge eingeben, um leere Werte korrekt zu verarbeiten:
if val, ok := session.Values["email"].(string); ok { // if val is a string switch val { case "": http.Redirect(res, req, "html/login.html", http.StatusFound) default: http.Redirect(res, req, "html/home.html", http.StatusFound) } } else { // if val is not a string type http.Redirect(res, req, "html/login.html", http.StatusFound) }
Sie sollten beim Speichern von Sitzungen auch auf Fehler prüfen:
err := sessionNew.Save(req, res) if err != nil { // handle the error case }
Stellen Sie abschließend sicher, dass Sie die Sitzung abrufen und validieren, bevor Sie statische Dateien in der SessionHandler-Funktion bereitstellen:
func SessionHandler(res http.ResponseWriter, req *http.Request) { session, err := store.Get(req, "loginSession") if err != nil { // Handle the error } if session.Values["email"] == nil { http.Redirect(res, req, "html/login.html", http.StatusFound) } else { http.Redirect(res, req, "html/home.html", http.StatusFound) } }
Durch die Behebung dieser Probleme sollten Sie dies sicherstellen können Sitzungsvariablen werden bei Verwendung von Gorilla Sessions über alle Anfragen hinweg korrekt beibehalten.
Das obige ist der detaillierte Inhalt vonWarum werden meine Sitzungsvariablen mit Gorilla Sessions nicht beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!