Maison > développement back-end > Golang > Pourquoi mes sessions Gorilla ne persistent-elles pas lors des requêtes dans mon application Go ?

Pourquoi mes sessions Gorilla ne persistent-elles pas lors des requêtes dans mon application Go ?

Linda Hamilton
Libérer: 2024-11-03 05:19:03
original
787 Les gens l'ont consulté

Why are my Gorilla Sessions not persisting across requests in my Go application?

Dépannage des sessions Gorilla dans Go

Description du problème

Lors de l'utilisation de sessions Gorilla, les variables de session ne sont pas conservées entre les requêtes. L'application dirige les utilisateurs vers la page de connexion malgré une connexion réussie et le stockage des variables de session.

Solution

1. Configuration correcte du chemin :

Le magasin de sessions n'est pas accessible à partir d'autres chemins car le chemin est défini sur "/loginSession". Remplacez-le par "/" pour rendre la session accessible dans toute l'application.

2. Validation de la valeur de session :

Ne comparez pas session.Values["email"] à zéro. Au lieu de cela, tapez assert la valeur dans une chaîne et vérifiez si elle est vide en utilisant val == "".

3. Gestion des erreurs :

Assurez-vous que les erreurs sont traitées lors de l'enregistrement des sessions à l'aide de err := sessionNew.Save(req, res).

4. Validation de session dans SessionHandler :

Validez la session avant de servir des fichiers statiques dans SessionHandler. Rediriger les utilisateurs vers la connexion si la valeur de la session de messagerie n'est pas présente.

Corrections de code :

Fonction d'initialisation :

<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

SessionHandler :

<code class="go">func SessionHandler(res http.ResponseWriter, req *http.Request) {
    session, err := store.Get(req, "loginSession")
    if err != nil {
        // Handle the error
    }

    if session.Values["email"] == "" {
        http.Redirect(res, req, "html/login.html", http.StatusFound)
    } else {
        http.Redirect(res, req, "html/home.html", http.StatusFound)
    }
}</code>
Copier après la connexion

Recommandations de sécurité :

De plus, il est crucial d'utiliser bcrypt pour le hachage de mot de passe et de paramétrer les requêtes SQL pour éviter vulnérabilités potentielles.

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