Maison > développement back-end > Golang > Pourquoi mes variables de session ne sont-elles pas persistantes dans les requêtes utilisant des sessions Gorilla ?

Pourquoi mes variables de session ne sont-elles pas persistantes dans les requêtes utilisant des sessions Gorilla ?

Mary-Kate Olsen
Libérer: 2024-11-03 20:49:03
original
1134 Les gens l'ont consulté

Why Are My Session Variables Not Persistent Across Requests Using Gorilla Sessions?

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

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

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

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

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