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