Maison >développement back-end >Golang >Implémentation de l'authentification de base HTTP dans Gin

Implémentation de l'authentification de base HTTP dans Gin

Guanhui
Guanhuiavant
2020-06-15 18:04:463587parcourir

Implémentation de l'authentification de base HTTP dans Gin

J'ai étudié le Go, en particulier le gin. J'ai besoin d'une authentification rapide et sale pour mon projet animalier.

Normalement, je ne recommanderais pas d'utiliser HTTP / basic auth pour sécuriser les ressources, mais pour ce projet, je n'ai pas de base de données, je fournis juste quelques fichiers de démarque ici et là. J'utiliserai donc ici l'authentification HTTP/basique pour l'authentification.

gin est l'un de mes frameworks Web préférés car il contient de nombreux middlewares vraiment sympas, c'est un peu comme le framework express pour node.js ou hapijs.

Installer le framework Gin et imprimer Hello World

Si vous créez un projet go/src dans le répertoire gin-http-auth, ajoutez le contenu suivant au fichier main.go du projet :

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello World!",
        })
    })
    r.Run() //监听 0.0.0.0:8080 
}

Ensuite, exécutez la commande go get sur votre terminal et votre projet commencera à s'exécuter ! Vous devez maintenant démarrer la nouvelle API JSON en exécutant la commande suivante :

go run main.go

Vous pouvez saisir localhost:8080 dans votre navigateur et vous devriez voir "message : Hello World!"

Remarque : Fournir une API est probablement l'un des cas d'utilisation les plus importants de gin, mais vous pouvez également restituer directement une série de modèles.

Utilisez le framework Gin pour implémenter la protection des routes


Supposons que vous disposiez maintenant d'une méthode secrète et que vous ne vouliez pas que tout le monde y accède via l'URL. Il s'agit d'une sauce barbecue spéciale. recette Ou une lettre d'amour avec quelques détails cachés !

Nous devons configurer quelques exemples de comptes d'utilisateurs et créer un itinéraire secret, bien sûr, nous pouvons également configurer un itinéraire par défaut /.

Jetons un coup d'œil à cet exemple minimum réalisable :

package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

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

    r.GET("/", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "Hello World!",
        })
    })

    authorized := r.Group("/", gin.BasicAuth(gin.Accounts{
        "user1": "love",
        "user2": "god",
        "user3": "sex",
    }))

    authorized.GET("/secret", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "secret": "The secret ingredient to the BBQ sauce is stiring it in an old whiskey barrel.",
        })
    })

    r.Run() // 监听服务在 0.0.0.0:8080
}
  1. Dans import, un autre net/http package est importé, utilisé pour formater le code d'état de la réponse http.
  2. Ajout de certains utilisateurs au groupe d'accès autorisé.
  3. authorized.GET Permet uniquement à l'utilisateur de saisir la bonne combinaison. Il fonctionne comme un routeur normal, mais il nécessite une authentification

Lorsque vous modifiez le contenu du fichier, appuyez sur "CTRL + C" pour exécuter rapidement une instance du framework Gin et redémarrez-la.

Lorsque vous visitez localhost:8080/secret dans votre navigateur, vous devriez voir une fenêtre vous invitant à saisir votre nom d'utilisateur et votre mot de passe.

Si vous avez saisi correctement votre compte et votre mot de passe, vous verrez le résultat suivant :

secret    "The secret ingredient to the BBQ sauce is stiring it in an old whiskey barrel."

C'est tout ! Vous avez créé un itinéraire dans votre projet Web Go qui nécessite une authentification de base http !

Si vous voulez des exemples plus détaillés, consultez le fichier README.md de gin sur Github car il contient plusieurs excellents exemples !

Tutoriel recommandé : "Go Tutorial"

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer