Heim >Backend-Entwicklung >Golang >Implementierung von HTTP Basic Auth in Gin

Implementierung von HTTP Basic Auth in Gin

Guanhui
Guanhuinach vorne
2020-06-15 18:04:463590Durchsuche

Implementierung von HTTP Basic Auth in Gin

Ich habe Go studiert, insbesondere Gin. Ich benötige eine schnelle und schmutzige Authentifizierung für mein Lieblingsprojekt.

Normalerweise würde ich nicht empfehlen, HTTP/Basisauthentifizierung zum Sichern von Ressourcen zu verwenden, aber für dieses Projekt habe ich keine Datenbank, ich stelle nur hier und da ein paar Markdown-Dateien zur Verfügung. Daher werde ich hier HTTP/Basic Auth zur Authentifizierung verwenden.

Gin ist eines meiner Lieblings-Web-Frameworks, weil es viele wirklich coole Middleware hat, es ist so etwas wie das Express-Framework für node.js oder hapijs.

Gin-Framework installieren und Hello World drucken

Wenn Sie ein go/src-Projekt im gin-http-auth-Verzeichnis erstellen, fügen Sie den folgenden Inhalt zur main.go-Datei des Projekts hinzu:

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 
}

Führen Sie dann den Befehl go get auf Ihrem Terminal aus und Ihr Projekt wird gestartet! Sie müssen jetzt die neue JSON-API starten, indem Sie den folgenden Befehl ausführen:

go run main.go

Sie können localhost:8080 in Ihren Browser eingeben und Sie sollten „Nachricht: Hello World!“ sehen

Hinweis: Die Bereitstellung einer API ist wahrscheinlich einer der größeren Anwendungsfälle für Gin, aber Sie können eine Reihe von Vorlagen auch direkt rendern.

Verwenden Sie das Gin-Framework, um den Routenschutz zu implementieren


Angenommen, Sie haben jetzt eine geheime Methode und möchten nicht, dass jeder über die URL darauf zugreift. Dies ist eine spezielle Barbecue-Sauce Rezept Oder ein Liebesbrief mit einigen versteckten Details!

Wir müssen einige Beispielbenutzerkonten einrichten und eine geheime Route erstellen. Natürlich können wir auch eine Standardroute einrichten /.

Sehen wir uns dieses minimal machbare Beispiel an:

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. In import wird ein weiteres net/http-Paket importiert, das zum Formatieren des Statuscodes der http-Antwort verwendet wird.
  2. Einige Benutzer wurden zur Gruppe mit autorisiertem Zugriff hinzugefügt.
  3. authorized.GET Ermöglicht dem Benutzer nur die Eingabe der richtigen Kombination. Es funktioniert wie ein normaler Router, erfordert jedoch eine Authentifizierung

Wenn Sie den Dateiinhalt ändern, drücken Sie „STRG + C“, um schnell eine Instanz des Gin-Frameworks auszuführen und neu zu starten.

Wenn Sie „localhost:8080/secret“ in Ihrem Browser aufrufen, sollte ein Fenster angezeigt werden, in dem Sie zur Eingabe Ihres Benutzernamens und Passworts aufgefordert werden.

Wenn Sie Ihr Konto und Passwort korrekt eingegeben haben, sehen Sie die folgende Ausgabe:

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

Das war's! Sie haben in Ihrem Go-Webprojekt eine Route erstellt, die eine http-Basisauthentifizierung erfordert!

Wenn Sie detailliertere Beispiele wünschen, schauen Sie sich Gins README.md auf Github an, da dort mehrere großartige Beispiele enthalten sind!

Empfohlenes Tutorial: „Go Tutorial

Das obige ist der detaillierte Inhalt vonImplementierung von HTTP Basic Auth in Gin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen