Maison > développement back-end > Golang > Pourquoi mes variables de session ne sont-elles pas conservées à l'aide de Gorilla Sessions ?

Pourquoi mes variables de session ne sont-elles pas conservées à l'aide de Gorilla Sessions ?

Susan Sarandon
Libérer: 2024-11-03 00:22:02
original
576 Les gens l'ont consulté

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

Variables de sessions non conservées à l'aide de Gorilla Sessions

Dans votre demande d'assistance pour la gestion des sessions à l'aide de Gorilla Sessions, vous avez décrit un problème où les valeurs de session n'étaient pas conservées d'une requête à l'autre. .

Un problème potentiel réside dans le chemin que vous définissez pour le magasin de session. En définissant le chemin sur /loginSession, vous limitez la validité de la session à ce chemin spécifique. Pour garantir que les sessions sont cohérentes sur tous les chemins, vous devez plutôt définir le chemin sur / :

store.Options = &sessions.Options{
    Domain:   "localhost",
    Path:     "/",
    MaxAge:   3600 * 8,
    HttpOnly: true,
}
Copier après la connexion

Un autre point à considérer est la façon dont vous vérifiez les valeurs de session. Au lieu d'utiliser session.Values["email"] == nil, vous devez taper assert the value dans une chaîne pour gérer correctement les valeurs vides :

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)
}
Copier après la connexion

Vous devez également vérifier les erreurs lors de l'enregistrement des sessions :

err := sessionNew.Save(req, res)
if err != nil {
    // handle the error case
}
Copier après la connexion

Enfin, assurez-vous d'obtenir et de valider la session avant de servir des fichiers statiques dans la fonction SessionHandler :

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)
    }
}
Copier après la connexion

En résolvant ces problèmes, vous devriez être en mesure de vous assurer que les variables de session sont correctement conservées dans les requêtes utilisant Gorilla Sessions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal