JWT驗證:在Gin中實現JSON Web Token驗證
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
JWT(JSON Web Token)是一個開放標準,它定義了一種緊湊和獨立的方式,允許各方之間安全地傳輸資訊。由於其自包含特性,它非常適合用於身份驗證和資訊交換。
import (
jwt "github.com/dgrijalva/jwt-go"
)
// 簽名密鑰
var jwtSecret = []byte("secret")
func generateToken(userID string) string {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"userID": userID,
"exp": time.Now().Add(time.Hour * 72).Unix(),
})
tokenString, _ := token.SignedString(jwtSecret)
return tokenString
}
func authenticate(c *gin.Context) {
tokenString := c.GetHeader("Authorization")
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return jwtSecret, nil
})
if err != nil || !token.Valid {
c.JSON(http.StatusUnauthorized, gin.H{"error": "unauthorized"})
c.Abort()
return
}
claims := token.Claims.(jwt.MapClaims)
userID := claims["userID"].(string)
c.Set("userID", userID)
}
使用 JWT 驗證是現代 Web 應用中的熱門技術,它提供了一個高效、簡單和安全的方式來管理用戶身份。通過結合 Gin,我們可以輕鬆地在我們的應用中實現這一功能,確保資訊的安全交換。
謝謝大家看完這篇,如果您喜歡我的文章,歡迎 小額贊助我 ^^