gpt4 book ai didi

go - 如何从 token 中获取 claim ?

转载 作者:行者123 更新时间:2023-12-01 22:37:19 24 4
gpt4 key购买 nike

我有一个 GenerateToken 函数,它根据用户名、ID 和标准声明的组合生成 token 。

func GenerateToken( creds *users.User) (tokenString string, err error){
expirationTime := time.Now().Add(100 * time.Hour)
claims := &Claims{
Username: creds.Username,
Id : creds.Id,
StandardClaims: jwt.StandardClaims{
ExpiresAt: expirationTime.Unix(),
Issuer: "gogin",
},
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
tokenString, err = token.SignedString([]byte(os.Getenv("SECRET_CODE")))
if err != nil{
return "", err
}
return tokenString, nil
}

这是 claim 的结构
type Claims struct {
Username string `json:"username"`
Id uint32
jwt.StandardClaims
}

以上将为我生成一个 token 。
我需要解码这个 token 并提取声明。有没有办法得到相同的?

最佳答案

试试这个:

func parseToken(tokenString string) (claims jwt.MapClaims, err error) {
claims = jwt.MapClaims{}
parsed, err := jwt.ParseWithClaims(tokenString, claims, verifyFunc)
if err != nil {
return nil, err
}
if !parsed.Valid {
return nil, fmt.Errorf("invalid token")
}
return claims, nil
}

func verifyFunc(token *jwt.Token) (interface{}, error) {
return []byte(os.Getenv("SECRET_CODE")), nil
}

第一种方法接受一个标记字符串并对其进行解析。
第二种方法是 key func,您可以在其中使用 token header 中的属性

关于go - 如何从 token 中获取 claim ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59249418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com