Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan HTTP untuk pengesahan di Golang?

Bagaimana untuk menggunakan HTTP untuk pengesahan di Golang?

WBOY
WBOYasal
2024-06-03 09:09:57656semak imbas

Dalam Go, kaedah pengesahan termasuk: Pengesahan Asas: Gunakan nama pengguna dan kata laluan, kod pengesahan ditunjukkan dalam artikel. Pengesahan Token Pembawa: Gunakan token sebagai bukti kelayakan, kod pengesahan ditunjukkan dalam artikel. Pengesahan OAuth 2.0: Protokol kebenaran, kod pengesahan ditunjukkan dalam artikel. Contoh praktikal: Kod untuk mendayakan Pengesahan Asas untuk semua laluan disediakan dalam artikel.

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

Menggunakan HTTP untuk Pengesahan dalam Go

Menggunakan HTTP untuk Pengesahan dalam Go adalah penting untuk melindungi aplikasi anda dan mengesahkan pengguna. Berikut ialah panduan kepada beberapa kaedah pengesahan biasa dalam Go, termasuk contoh praktikal.

Pengesahan Asas

Pengesahan Asas ialah kaedah pengesahan yang paling mudah, menggunakan nama pengguna dan kata laluan untuk pengesahan.

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

Pengesahan Token Pembawa

Pengesahan Token Pembawa menggunakan token sebagai bukti kelayakan.

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 Authentication

OAuth 2.0 ialah protokol kebenaran yang digunakan secara meluas yang membolehkan pengguna membenarkan aplikasi pihak ketiga untuk mengakses data mereka.

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

Contoh Praktikal

Andaikan anda mempunyai penghala HTTP dan anda ingin mendayakan Pengesahan Asas untuk semua laluan:

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

Kini apabila seseorang cuba mengakses laluan akar (http://localhost:8080/) mereka akan diminta untuk nama pengguna dan kata laluan mereka, jika tidak Mereka akan menerima respons 401 Tanpa kebenaran.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan HTTP untuk pengesahan di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn