Maison > Article > développement back-end > Pourquoi mes variables de session ne sont-elles pas persistantes dans les requêtes utilisant des sessions Gorilla ?
Variables de session non conservées lors des requêtes utilisant des sessions Gorilla
Ce problème peut survenir lors de l'utilisation du middleware Gorilla Sessions pour gérer les variables de session. L'extrait de code fourni met en évidence plusieurs facteurs pouvant affecter la persistance de la session :
1. Configuration du chemin de session
Le code définit le chemin de session comme "/loginSession". Par conséquent, la session n'est valide que dans le chemin "/loginSession". Pour garantir la disponibilité de la session sur tous les itinéraires, le chemin doit être défini sur "/":
<code class="go">func init() { store.Options = &sessions.Options{ Domain: "localhost", Path: "/", MaxAge: 3600 * 8, // 8 hours HttpOnly: true, } }</code>
2. Comparaison de chaînes vides
Le code vérifie si session.Values["email"] == nil pour déterminer si la valeur est une chaîne vide. Cependant, comparer une chaîne vide à nil est incorrect. Utilisez plutôt l'assertion de type pour rechercher une chaîne vide :
<code class="go">if val, ok := session.Values["email"].(string); ok { if val == "" { // Do something... } }</code>
3. Gestion des erreurs
Il est essentiel de gérer les erreurs lors de l'enregistrement de la session :
<code class="go">err := sessionNew.Save(req, res) if err != nil { // Handle the error }</code>
4. Ordre de validation de session
Le code sert des fichiers statiques avant de valider la session dans la fonction SessionHandler. Pour garantir une bonne validation de la session, la session doit être validée en premier :
<code class="go">func SessionHandler(res http.ResponseWriter, req *http.Request) { session, err := store.Get(req, "loginSession") if err != nil { // Handle the error } // Validate the session here... // Serve static files if the session is valid... }</code>
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!