Maison développement back-end Golang Gestion de session et son application dans le framework Gin

Gestion de session et son application dans le framework Gin

Jun 22, 2023 pm 12:38 PM
应用 会话管理 gin框架

Le framework Gin est un framework Web léger développé en utilisant le langage Go et présente les avantages d'efficacité, de facilité d'utilisation, de flexibilité et d'autres avantages. Dans le développement d'applications Web, la gestion de session est un sujet très important. Elle peut être utilisée pour enregistrer les informations utilisateur, vérifier l'identité de l'utilisateur, prévenir les attaques CSRF, etc. Cet article présentera le mécanisme de gestion de session et son application dans le framework Gin.

1. Mécanisme de gestion de session

Dans le framework Gin, la gestion de session est implémentée via un middleware. Le framework Gin fournit un package de session, qui encapsule les opérations requises pour la gestion de session. Avant d'utiliser le package de session, vous devez d'abord l'installer. Entrez la commande suivante dans le terminal :

go get github.com/gin-contrib/sessions
Copier après la connexion

Le package de session fournit quatre méthodes de gestion de session : Cookie, stockage en mémoire, stockage de fichiers et stockage Redis. Parmi eux, le stockage en mémoire et le stockage de fichiers sont les valeurs par défaut, et le stockage Redis nécessite que le package redis-go-driver soit installé et importé dans le code. Ce qui suit utilise la méthode Cookie comme exemple pour présenter la mise en œuvre de la gestion de session.

  1. Créer un middleware de session
package main

import (
    "github.com/gin-contrib/sessions"
    "github.com/gin-contrib/sessions/cookie"
    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()

    // 设置会话中间件
    store := cookie.NewStore([]byte("secret"))
    router.Use(sessions.Sessions("mysession", store))

    router.GET("/set", setHandler)
    router.GET("/get", getHandler)

    router.Run(":8080")
}

func setHandler(c *gin.Context) {
    session := sessions.Default(c)
    session.Set("user", "John")
    session.Save()
    c.String(200, "Session saved.")
}

func getHandler(c *gin.Context) {
    session := sessions.Default(c)
    user := session.Get("user")
    c.String(200, "User is %v.", user)
}
Copier après la connexion

Dans le code ci-dessus, nous créons un middleware de session dans le stockage des cookies et le lions au moteur Gin. Parmi eux, le premier paramètre "mysession" représente le nom de la session, et le deuxième paramètre []byte ("secret") est une clé utilisée pour crypter la valeur dans le cookie. Dans setHandler, nous utilisons la méthode session.Set() pour définir une paire clé-valeur, puis appelons la méthode session.Save() pour enregistrer la session. Dans getHandler, nous utilisons la méthode session.Get() pour obtenir des informations sur l'utilisateur et les afficher dans la réponse.

  1. Gestion des sessions de test

Entrez la commande suivante dans le terminal pour démarrer le service :

go run main.go
Copier après la connexion

Entrez l'adresse suivante dans le navigateur :

http://localhost:8080/set
Copier après la connexion

Puis entrez :

http://localhost:8080/get
Copier après la connexion

Vous pouvez voir que les informations de réponse sont :

User is John.
Copier après la connexion

Cette description Nous avons créé avec succès une session et enregistré les informations utilisateur.

2. Application de la gestion de session

Dans les applications Web, la gestion de session est généralement utilisée dans les scénarios suivants :

  1. Authentification de l'utilisateur

L'authentification de l'utilisateur est l'un des scénarios les plus courants dans les applications Web. si l'utilisateur se connecte et si l'utilisateur a accès à certaines ressources. Dans le framework Gin, nous pouvons stocker les informations utilisateur en session et les vérifier partout où une authentification est requise. Voici un exemple simple d'authentification d'utilisateur :

func authHandler(c *gin.Context) {
    session := sessions.Default(c)
    user := session.Get("user")
    if user == nil {
        c.Redirect(http.StatusFound, "/login")
        return
    }
    // 验证用户身份
    if user != "admin" {
        c.AbortWithStatus(http.StatusUnauthorized)
        return
    }
    c.String(200, "Hello, admin.")
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord la méthode session.Get() pour obtenir des informations sur l'utilisateur, et si l'utilisateur n'est pas connecté, nous redirigeons vers la page de connexion. Si l'utilisateur est connecté, vérifiez qu'il est administrateur. S'il s'agit d'un administrateur, "Bonjour, admin." est affiché, sinon 401 Non autorisé est renvoyé.

  1. Prévenir les attaques CSRF

Cross-Site Request Forgery (CSRF) est une méthode d'attaque Web courante. Elle utilise le mécanisme Cookie du navigateur pour forger des requêtes afin d'atteindre l'objectif de l'attaque. Dans le framework Gin, nous pouvons utiliser des sessions pour empêcher les attaques CSRF. Plus précisément, à chaque soumission de formulaire, nous ajoutons un champ csrf_token au formulaire, puis stockons le champ dans la session. A chaque requête ultérieure, nous pouvons vérifier si le token est cohérent avec ce qui est stocké dans la session. Voici un exemple simple de défense CSRF :

func csrfHandler(c *gin.Context) {
    session := sessions.Default(c)
    token := session.Get("csrf_token")
    if token == nil || token != c.PostForm("csrf_token") {
        c.AbortWithStatus(http.StatusBadRequest)
        return
    }
    // 处理表单提交
    c.String(200, "Form submitted.")
}

func formHandler(c *gin.Context) {
    session := sessions.Default(c)
    token := uuid.New().String()
    session.Set("csrf_token", token)
    session.Save()
    c.HTML(http.StatusOK, "form.html", gin.H{
        "csrf_token": token,
    })
}
Copier après la connexion

Dans le code ci-dessus, nous comparons d'abord la valeur csrf_token dans le formulaire avec la valeur du jeton stockée dans la session. S’ils sont incohérents, un code d’état 400 Bad Request est renvoyé. S'ils sont cohérents, la soumission du formulaire est traitée et « Formulaire soumis » est affiché. Lorsque le formulaire est chargé, nous utilisons le package uuid pour générer une valeur de jeton unique, puis stockons la valeur dans la session et enfin renvoyons la page du formulaire à l'utilisateur.

3. Résumé

Dans cet article, nous avons présenté le mécanisme de gestion de session et son application dans le framework Gin. La gestion des sessions est un sujet important dans le développement d'applications Web. Elle peut être utilisée pour enregistrer les informations des utilisateurs, vérifier l'identité des utilisateurs, prévenir les attaques CSRF, etc. Dans le framework Gin, nous pouvons utiliser un middleware pour implémenter la gestion de session, et le package de session nous fournit une interface d'exploitation pratique. Dans les applications pratiques, nous pouvons également combiner d'autres modules fonctionnels, tels que l'authentification, l'autorisation, le cryptage, la journalisation, etc., pour créer un système d'application Web plus complet.

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment annuler la suppression de l'écran d'accueil sur iPhone Comment annuler la suppression de l'écran d'accueil sur iPhone Apr 17, 2024 pm 07:37 PM

Vous avez supprimé quelque chose d'important de votre écran d'accueil et vous essayez de le récupérer ? Vous pouvez remettre les icônes d’applications à l’écran de différentes manières. Nous avons discuté de toutes les méthodes que vous pouvez suivre et remettre l'icône de l'application sur l'écran d'accueil. Comment annuler la suppression de l'écran d'accueil sur iPhone Comme nous l'avons mentionné précédemment, il existe plusieurs façons de restaurer cette modification sur iPhone. Méthode 1 – Remplacer l'icône de l'application dans la bibliothèque d'applications Vous pouvez placer une icône d'application sur votre écran d'accueil directement à partir de la bibliothèque d'applications. Étape 1 – Faites glisser votre doigt sur le côté pour trouver toutes les applications de la bibliothèque d'applications. Étape 2 – Recherchez l'icône de l'application que vous avez supprimée précédemment. Étape 3 – Faites simplement glisser l'icône de l'application de la bibliothèque principale vers le bon emplacement sur l'écran d'accueil. Voici le schéma d'application

Le rôle et l'application pratique des symboles fléchés en PHP Le rôle et l'application pratique des symboles fléchés en PHP Mar 22, 2024 am 11:30 AM

Le rôle et l'application pratique des symboles fléchés en PHP En PHP, le symbole fléché (->) est généralement utilisé pour accéder aux propriétés et méthodes des objets. Les objets sont l'un des concepts de base de la programmation orientée objet (POO) en PHP. Dans le développement actuel, les symboles fléchés jouent un rôle important dans le fonctionnement des objets. Cet article présentera le rôle et l'application pratique des symboles fléchés et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Le rôle du symbole flèche pour accéder aux propriétés d'un objet. Le symbole flèche peut être utilisé pour accéder aux propriétés d'un objet. Quand on instancie une paire

Du débutant au compétent : explorez différents scénarios d'application de la commande Linux tee Du débutant au compétent : explorez différents scénarios d'application de la commande Linux tee Mar 20, 2024 am 10:00 AM

La commande Linuxtee est un outil de ligne de commande très utile qui peut écrire la sortie dans un fichier ou envoyer la sortie à une autre commande sans affecter la sortie existante. Dans cet article, nous explorerons en profondeur les différents scénarios d'application de la commande Linuxtee, du débutant au compétent. 1. Utilisation de base Tout d'abord, jetons un coup d'œil à l'utilisation de base de la commande tee. La syntaxe de la commande tee est la suivante : tee[OPTION]...[FILE]...Cette commande lira les données de l'entrée standard et enregistrera les données dans

Découvrez les avantages et les scénarios d'application du langage Go Découvrez les avantages et les scénarios d'application du langage Go Mar 27, 2024 pm 03:48 PM

Le langage Go est un langage de programmation open source développé par Google et lancé pour la première fois en 2007. Il est conçu pour être un langage simple, facile à apprendre, efficace et hautement simultané, et est favorisé par de plus en plus de développeurs. Cet article explorera les avantages du langage Go, présentera quelques scénarios d'application adaptés au langage Go et donnera des exemples de code spécifiques. Avantages : Forte concurrence : le langage Go prend en charge de manière intégrée les threads-goroutine légers, qui peuvent facilement implémenter une programmation simultanée. Goroutin peut être démarré en utilisant le mot-clé go

PHP démarre une nouvelle session ou reprend une session existante PHP démarre une nouvelle session ou reprend une session existante Mar 21, 2024 am 10:26 AM

Cet article expliquera en détail comment démarrer une nouvelle session ou restaurer une session existante en PHP. L'éditeur pense que c'est très pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. Gestion de session PHP : démarrer une nouvelle session ou reprendre une session existante Introduction La gestion de session est cruciale en PHP, elle vous permet de stocker et d'accéder aux données utilisateur pendant la session utilisateur. Cet article explique comment démarrer une nouvelle session ou reprendre une session existante en PHP. Démarrer une nouvelle session La fonction session_start() vérifie si une session existe, sinon elle crée une nouvelle session. Il peut également lire les données de session et les convertir

La large application de Linux dans le domaine du cloud computing La large application de Linux dans le domaine du cloud computing Mar 20, 2024 pm 04:51 PM

La large application de Linux dans le domaine du cloud computing Avec le développement et la vulgarisation continus de la technologie du cloud computing, Linux, en tant que système d'exploitation open source, joue un rôle important dans le domaine du cloud computing. En raison de leur stabilité, de leur sécurité et de leur flexibilité, les systèmes Linux sont largement utilisés dans diverses plates-formes et services de cloud computing, fournissant une base solide pour le développement de la technologie du cloud computing. Cet article présentera le large éventail d'applications de Linux dans le domaine du cloud computing et donnera des exemples de code spécifiques. 1. Technologie de virtualisation d'applications de Linux dans la plate-forme de cloud computing Technologie de virtualisation

Comprendre les horodatages MySQL : fonctions, fonctionnalités et scénarios d'application Comprendre les horodatages MySQL : fonctions, fonctionnalités et scénarios d'application Mar 15, 2024 pm 04:36 PM

L'horodatage MySQL est un type de données très important, qui peut stocker la date, l'heure ou la date plus l'heure. Dans le processus de développement actuel, l'utilisation rationnelle des horodatages peut améliorer l'efficacité des opérations de base de données et faciliter les requêtes et les calculs liés au temps. Cet article abordera les fonctions, les fonctionnalités et les scénarios d'application des horodatages MySQL, et les expliquera avec des exemples de code spécifiques. 1. Fonctions et caractéristiques des horodatages MySQL Il existe deux types d'horodatages dans MySQL, l'un est TIMESTAMP

Tutoriel Apple sur la façon de fermer les applications en cours d'exécution Tutoriel Apple sur la façon de fermer les applications en cours d'exécution Mar 22, 2024 pm 10:00 PM

1. Nous cliquons d’abord sur le petit point blanc. 2. Cliquez sur l'appareil. 3. Cliquez sur Plus. 4. Cliquez sur Sélecteur d'applications. 5. Fermez l'arrière-plan de l'application.

See all articles