在 Go 语言中,有多个第三方库可以用于处理 JWT
(JSON Web Token),其中比较常用的是 github.com/dgrijalva/jwt-go
。
以下是一个简单的使用示例:
package main
import (
"fmt"
"time"
"github.com/dgrijalva/jwt-go"
)
func main() {
// 定义密钥
mySigningKey := []byte("my_secret_key")
// 创建一个令牌
token := jwt.New(jwt.SigningMethodHS256)
// 设置令牌的声明(Claims)
claims := token.Claims.(jwt.MapClaims)
claims["name"] = "John Doe"
claims["exp"] = time.Now().Add(time.Hour * 1).Unix()
// 使用密钥签署令牌
signedToken, err := token.SignedString(mySigningKey)
if err!= nil {
fmt.Println("Error signing token:", err)
return
}
fmt.Println("Signed Token:", signedToken)
// 解析令牌
parsedToken, err := jwt.Parse(signedToken, func(token *jwt.Token) (interface{}, error) {
return mySigningKey, nil
})
if err!= nil {
fmt.Println("Error parsing token:", err)
return
}
if parsedToken.Valid {
fmt.Println("Token is valid")
} else {
fmt.Println("Token is not valid")
}
}
在上述示例中:
- 首先创建了一个
JWT
令牌,并设置了一些声明,如用户名和过期时间。 - 使用密钥对令牌进行签署。
- 然后尝试解析已签署的令牌,并检查其有效性。
请确保在实际应用中,根据您的需求正确设置声明和处理错误情况。