Warum werden meine Sitzungsvariablen mit Gorilla Sessions nicht beibehalten?

Susan Sarandon
Freigeben: 2024-11-03 00:22:02
Original
537 Leute haben es durchsucht

Why are my session variables not being preserved using Gorilla Sessions?

Sitzungsvariablen werden bei Verwendung von 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,
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

Sie sollten beim Speichern von Sitzungen auch auf Fehler prüfen:

err := sessionNew.Save(req, res)
if err != nil {
    // handle the error case
}
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage