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.
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>
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>
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!