【发布时间】:2020-04-29 04:58:12
【问题描述】:
我正在尝试使用 Go 生成 JWT 令牌,并创建了以下函数。我需要在 jwt 中添加电子邮件地址,但是当我这样做时,我收到一条错误消息 key is of invalid type
func GenerateUserToken(expiryHours time.Duration, email string, secretKey string) (string, error) {
// Create a new token object, specifying signing method and the claims
// you would like it to contain.
token := jwt.New(jwt.SigningMethodES256)
claims := token.Claims.(jwt.MapClaims)
claims["exp"] = time.Now().Add(time.Hour * expiryHours).Unix()
claims["email"] = email
tokenStr, err := token.SignedString([]byte(secretKey))
if err != nil {
return "", err
}
return tokenStr, nil
}
这可能是什么原因?我犯了什么错误?
【问题讨论】:
-
您需要根据您的签名方法传递正确类型的密钥,我认为是
ecdsa.PrivateKey。 -
你读过这个 Github 问题吗? github.com/dgrijalva/jwt-go/issues/65
-
@BurakSerdar 我只需要传递一个字符串键。那我必须选择什么算法?
-
HMAC 方法使用简单的字符串键。签名者和验证者都必须知道该密钥。
-
@BurakSerdar 你能举个小例子作为答案吗?
标签: go jwt token jwt-auth jwt-go