Maison > développement back-end > Golang > le corps du texte

Comment utiliser HTTP pour l'authentification dans Golang ?

WBOY
Libérer: 2024-06-03 09:09:57
original
703 Les gens l'ont consulté

Dans Go, les méthodes d'authentification incluent : Authentification de base : utilisez le nom d'utilisateur et le mot de passe, le code de vérification est affiché dans l'article. Authentification par jeton du porteur : utilisez le jeton comme identifiant, le code de vérification est affiché dans l'article. Authentification OAuth 2.0 : Un protocole d'autorisation, le code de vérification est indiqué dans l'article. Exemple pratique : le code permettant d'activer l'authentification de base pour toutes les routes est fourni dans l'article.

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

Utiliser HTTP pour l'authentification dans Go

L'utilisation de HTTP pour l'authentification dans Go est cruciale pour sécuriser votre application et authentifier vos utilisateurs. Voici un guide de plusieurs méthodes d'authentification courantes dans Go, y compris des exemples pratiques.

Authentification de base

L'authentification de base est la méthode d'authentification la plus simple, utilisant un nom d'utilisateur et un mot de passe pour l'authentification.

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)
    })
}
Copier après la connexion

Authentification par jeton du porteur

L'authentification par jeton du porteur utilise des jetons comme informations d'identification.

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)
    })
}
Copier après la connexion

Authentification OAuth 2.0

OAuth 2.0 est un protocole d'autorisation largement utilisé qui permet aux utilisateurs d'autoriser des applications tierces à accéder à leurs données.

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)
    })
}
Copier après la connexion

Exemple pratique

Supposons que vous ayez un routeur HTTP et que vous souhaitiez activer l'authentification de base pour toutes les routes :

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))
}
Copier après la connexion

Maintenant, chaque fois que quelqu'un essaie d'accéder à la route racine (http://localhost:8080/), il lui sera demandé son nom d'utilisateur et son mot de passe, sinon Ils recevront une réponse 401 non autorisée.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal