一尘不染

在Golang中解码JWT令牌

go

我目前正在使用Golang应用程序。我从客户端收到JWT令牌,在Go中,我需要对该令牌进行解码并获取以下信息:用户,名称等。我正在检查可用于处理JWT的库令牌,我来到https://github.com/dgrijalva/jwt-
go,但我看不到如何简单地制作所需的东西。

我有令牌,我需要将信息解码为地图或至少为json。在哪里可以找到如何做的指南?谢谢!


阅读 362

收藏
2020-07-02

共1个答案

一尘不染

函数jwt.ParseWithClaims接受jwt.Claims第二个参数的接口。除了基于结构的自定义声明外,该软件包还提供map基于声明的声明,即jwt.MapClaims。因此,您只需将令牌解码为MapClaims,例如

tokenString := "<YOUR TOKEN STRING>"    
claims := jwt.MapClaims{}
token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) {
    return []byte("<YOUR VERIFICATION KEY>"), nil
})
// ... error handling

// do something with decoded claims
for key, val := range claims {
    fmt.Printf("Key: %v, value: %v\n", key, val)
}
2020-07-02