在 Go 中,身份驗證方法包括:基本身份驗證:使用使用者名稱和密碼,驗證程式碼在文章中展示。 Bearer 令牌驗證:使用令牌作為憑證,驗證程式碼在文章中顯示。 OAuth 2.0 身份驗證:一種授權協議,驗證程式碼在文章中展示。實戰範例:針對所有路由啟用基本驗證的程式碼在文章中提供。
在 Go 中使用 HTTP 進行驗證至關重要,以保護應用程式並驗證使用者身分。以下是 Go 中幾種常用身份驗證方法的指南,包括實戰案例。
基本驗證是最簡單的身份驗證方法,使用使用者名稱和密碼進行身份驗證。
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) }) }
Bearer 令牌驗證使用令牌作為憑證。
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 是一種廣泛使用的授權協議,允許使用者授權第三方應用程式存取其資料。
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) }) }
假設您有一個HTTP 路由器,您希望針對所有路由啟用基本驗證:
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)) }
現在,只要有人嘗試存取根路由(http://localhost:8080/
),他們就會被要求輸入使用者名稱和密碼,否則他們將收到401 Unauthorized 回應。
以上是在 Golang 中如何使用 HTTP 進行驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!