go jwt生成的字符串token怎样解密

加密过程:

// 生成token type Token
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
                "uid": "123",
                "iat": time.Now().Unix(),
                "exp": time.Now().Add(1 * time.Hour * time.Duration(1)).Unix(),
            })
// 加密用的签名密钥
signSecret:=[]byte("abcdefg123456")

// 生成给客户端的token
tokenString, _ := token.SignedString(signSecret)
//eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NjEyNzg0MDcsImlhdCI6MTU2MTI3NDgwNywiaXNzIjoiR29GdW5jIiwianRpIjoiOTUyNyIsInVpZCI6MSwidXNuIjoieXpoYTUifQ.fVvevhHHRhuUySRjSw-qMG3NEQqSdD9m6m1GBSD5u6o

以上加密后,生成的token字符串怎样解密?
我最终是想取得Claims里的uid的值

阅读 5.9k
1 个回答
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NjEyNzg0MDcsImlhdCI6MTU2MTI3NDgwNywiaXNzIjoiR29GdW5jIiwianRpIjoiOTUyNyIsInVpZCI6MSwidXNuIjoieXpoYTUifQ.fVvevhHHRhuUySRjSw-qMG3NEQqSdD9m6m1GBSD5u6o'.split('.').map(e=>{console.log(atob(e))})
// {"alg":"HS256","typ":"JWT"}
// {"exp":1561278407,"iat":1561274807,"iss":"GoFunc","jti":"9527","uid":1,"usn":"yzha5"}

根据 jwt 的规范,header 和 payload 经过 base64 encode 后使用 . 连接,再将 sign 使用 . 拼接在最后,成为 token 。

故,只需要使用 . 分割字符串,然后将 payload 部分进行 base64 decode 即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题