Wie verwende ich HTTP zur Authentifizierung in Golang?

WBOY
Freigeben: 2024-06-03 09:09:57
Original
692 Leute haben es durchsucht

Zu den Authentifizierungsmethoden in Go gehören: Basisauthentifizierung: Verwenden Sie Benutzernamen und Passwort, der Bestätigungscode wird im Artikel angezeigt. Inhabertoken-Authentifizierung: Verwenden Sie ein Token als Anmeldeinformation. Der Bestätigungscode wird im Artikel angezeigt. OAuth 2.0-Authentifizierung: Ein Autorisierungsprotokoll, der Bestätigungscode wird im Artikel gezeigt. Praxisbeispiel: Der Code zum Aktivieren der Basisauthentifizierung für alle Routen finden Sie im Artikel.

在 Golang 中如何使用 HTTP 进行身份验证?

HTTP für die Authentifizierung in Go verwenden

Die Verwendung von HTTP für die Authentifizierung in Go ist entscheidend für die Sicherheit Ihrer Anwendung und die Authentifizierung von Benutzern. Hier finden Sie eine Anleitung zu mehreren gängigen Authentifizierungsmethoden in Go, einschließlich praktischer Beispiele.

Basisauthentifizierung

Die Basisauthentifizierung ist die einfachste Authentifizierungsmethode, bei der Benutzername und Passwort zur Authentifizierung verwendet werden.

func BasicAuth(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        username, password, ok := r.BasicAuth()
        if !ok || username != "user" || password != "password" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }

        next.ServeHTTP(w, r)
    })
}
Nach dem Login kopieren

Bearer-Token-Authentifizierung

Bearer-Token-Authentifizierung verwendet Token als Anmeldeinformationen.

func BearerAuth(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.Header.Get("Authorization")
        if token != "Bearer my-token" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }

        next.ServeHTTP(w, r)
    })
}
Nach dem Login kopieren

OAuth 2.0-Authentifizierung

OAuth 2.0 ist ein weit verbreitetes Autorisierungsprotokoll, das es Benutzern ermöglicht, Anwendungen von Drittanbietern den Zugriff auf ihre Daten zu autorisieren.

func OAuth2Auth(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.URL.Query().Get("access_token")
        if token != "my-access-token" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }

        next.ServeHTTP(w, r)
    })
}
Nach dem Login kopieren

Praktisches Beispiel

Angenommen, Sie haben einen HTTP-Router und möchten die Standardauthentifizierung für alle Routen aktivieren:

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, authenticated user!"))
    })

    // Use BasicAuth middleware to protect all routes
    loggedRouter := BasicAuth(router)

    log.Fatal(http.ListenAndServe(":8080", loggedRouter))
}
Nach dem Login kopieren

Wenn jetzt jemand versucht, auf die Root-Route (http://localhost:8080/) zuzugreifen, wird er andernfalls nach seinem Benutzernamen und Passwort gefragt Sie erhalten eine 401 Unauthorized-Antwort.

Das obige ist der detaillierte Inhalt vonWie verwende ich HTTP zur Authentifizierung in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!