Heim >Backend-Entwicklung >Golang >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.
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 }
import
wird ein weiteres net/http
-Paket importiert, das zum Formatieren des Statuscodes der http-Antwort verwendet wird. authorized.GET
Ermöglicht dem Benutzer nur die Eingabe der richtigen Kombination. Es funktioniert wie ein normaler Router, erfordert jedoch eine AuthentifizierungWenn 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!