Maison  >  Article  >  développement back-end  >  Comment configurer une session dans Golang

Comment configurer une session dans Golang

PHPz
PHPzoriginal
2023-04-25 10:42:33785parcourir

GoLang est un langage de programmation très populaire car il offre un moyen rapide, efficace et sécurisé de développer des applications Web. Dans cet article, nous présenterons comment configurer une session à l'aide de GoLang.

Qu'est-ce que la Session ?

Session est un mécanisme de gestion des informations utilisateur dans les applications Web. Lorsqu'un utilisateur se connecte à une application Web, le serveur crée une session, puis l'ID de session est envoyé au navigateur comme en-tête de réponse via les cookies. La prochaine fois que l'utilisateur enverra une demande dans cette application Web, il établira une session avec le serveur via l'ID de session enregistré dans les cookies. La session restera active jusqu'à ce que l'utilisateur choisisse de se déconnecter ou que la session expire.

Dans GoLang, de nombreuses bibliothèques sont fournies pour gérer les sessions, telles que gorilla/sessions, cookie-session, etc. Cet article utilisera la bibliothèque gorilla/sessions pour montrer comment configurer une session.

Configurer la session

Avant de commencer à configurer la session, vous devez télécharger et installer la bibliothèque gorilla/sessions. Vous pouvez exécuter la commande suivante pour télécharger la bibliothèque :

go get github.com/gorilla/sessions

Le processus de configuration d'une session dans GoLang est grossièrement divisé en trois étapes suivantes :

  1. Initialiser une nouvelle session.
  2. Stockez la valeur qui doit être enregistrée dans la session.
  3. Enregistrez la session dans un cookie.

Voici un exemple de code simple :

package main

import (
    "github.com/gorilla/sessions"
    "net/http"
)

var store = sessions.NewCookieStore([]byte("secret"))

func main() {
    http.HandleFunc("/", indexHandler)
    http.ListenAndServe(":8000", nil)
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
    session, err := store.Get(r, "sessionid")
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    if session.IsNew {
        session.Values["username"] = "johndoe"
        session.Values["logged_in"] = true
        err = session.Save(r, w)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
    }

    w.Write([]byte("Hello " + session.Values["username"].(string)))
}

Dans le code ci-dessus, nous créons d'abord un nouvel objet CookieStore à l'aide de la fonction NewCookieStore() et définissons une tranche d'octets clé pour crypter le cookie. Ensuite, nous définissons une fonction indexHandler, dans laquelle nous obtenons l'instance de session basée sur le cookie dans la requête. Si la session n'existe pas, nous stockons d'abord les valeurs de nom d'utilisateur et de login_in dans la session, puis enregistrons la session dans le cookie. Si la session existe déjà, nous obtenons la valeur du nom d'utilisateur de la session et renvoyons la valeur à l'utilisateur via la réponse.

D'accord, ceci est un exemple de traitement de session très simple. Dans les applications réelles, nous pouvons avoir une logique de session et une interaction avec la base de données plus complexes, mais les concepts de base de la session sont les mêmes.

Résumé

Dans cet article, nous avons appris comment configurer une session dans GoLang à l'aide de la bibliothèque gorilla/sessions. Pour utiliser la session, nous devons initialiser une instance de session, enregistrer les informations qui doivent être enregistrées dans la session, puis conserver la session dans un cookie.

J'espère que cet article sera utile aux lecteurs qui souhaitent apprendre des sessions en Golang.

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!

Déclaration:
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