Maison >développement back-end >Golang >Pourquoi mes variables de session ne sont-elles pas 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, }
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) }
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 }
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) } }
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!