Bagaimana untuk menggunakan HTTP untuk pengesahan di Golang?

WBOY
Lepaskan: 2024-06-03 09:09:57
asal
655 orang telah melayarinya

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)
    })
}
Salin selepas log masuk

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)
    })
}
Salin selepas log masuk

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)
    })
}
Salin selepas log masuk

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))
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!