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.
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.
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) }) }
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) }) }
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) }) }
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)) }
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!