Go语言PASETO v2公开模式如何获取Issuer、Footer等附加数据
问题根源
你当前的VerifyToken函数将解析得到的newJsonToken、newFooter声明为了函数内的局部变量,且仅返回了验证是否通过的布尔值,这两个存储了附加数据的变量在函数执行完成后就会被回收,外部自然无法读取。
解决方案
修改VerifyToken的返回值,把解析完成的令牌声明、Footer以及错误信息对外返回即可,示例代码如下:
func VerifyToken(token string) (paseto.JSONToken, string, error) { v2 := paseto.NewV2() // 补充十六进制解码错误处理,避免非法公钥触发panic b, err := hex.DecodeString(PublicKey) if err != nil { return paseto.JSONToken{}, "", err } publicKEY := ed25519.PublicKey(b) var newJsonToken paseto.JSONToken var newFooter string err = v2.Verify(token, publicKEY, &newJsonToken, &newFooter) return newJsonToken, newFooter, err }
调用示例
在业务逻辑中调用该方法后即可直接读取对应字段:
tokenStr := "待验证的PASETO令牌字符串" jsonToken, footer, err := VerifyToken(tokenStr) if err != nil { log.Println("令牌验证失败:", err) // 验证失败的业务逻辑 return } // 读取Issuer字段 issuer := jsonToken.Issuer // 读取Footer字段 userFooter := footer // 也可直接读取其他内置字段,例如过期时间:jsonToken.Expiration
内容的提问来源于stack exchange,提问作者Saifullah Shahen
相关产品推荐
相关产品推荐

