[英]Using jwt-go Library - key is of invalid type
我正在尝试生成代码中提到的令牌,但是尽管我正在使用它,但它在这条线上给了我错误
tokenString, err:= token.SignedString(mySigningKey) as key 的类型无效
有什么建议可以解决这个问题吗?
谢谢
package main
import (
"fmt"
"github.com/dgrijalva/jwt-go"
"time"
)
var (
mySigningKey = []byte("secret")
)
func GenerateJWT() (string, error) {
token := jwt.New(jwt.SigningMethodES256)
claims := token.Claims.(jwt.MapClaims)
claims["authorized"] = true
claims["user"] = "ravi"
claims["exp"] = time.Now().Add(time.Minute + 30).Unix()
tokenString, err := token.SignedString(mySigningKey)
if err != nil {
fmt.Println(err)
fmt.Errorf("Something went wrong : %s", err.Error())
return "", err
}
return tokenString, nil
}
func main() {
tokenString, err := GenerateJWT()
if err != nil {
fmt.Println(err)
}
fmt.Println(tokenString)
}
此方法(SigningMethodES256)是ECDSA签名方法,您需要对密钥进行签名和验证,在您的情况下,最好更改为SigningMethodHS256
token := jwt.New(jwt.SigningMethodHS256)
你也可以使用类似的东西来生成你的令牌。 您可以根据自己的喜好修改signedDetails。 这样你就可以重复使用代码
import (
"log"
"time"
"github.com/dgrijalva/jwt-go"
)
type SignedDetails struct {
Email string
FirstName string
LastName string
Uid string
UserType string
jwt.StandardClaims
}
func GenerateAllTokens(
email string,
firstName string,
lastName string,
userType string,
userId string) (
signedToken string, signedRefreshToken string, error error) {
claims := &SignedDetails{
Email: email,
FirstName: firstName,
LastName: lastName,
Uid: userId,
UserType: userType,
StandardClaims: jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Hour * time.Duration(24)).Unix(),
},
}
refreshClaims := &SignedDetails{
StandardClaims: jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Hour * time.Duration(24)).Unix(),
},
}
token, err := jwt.NewWithClaims(jwt.SigningMethodHS256, claims).SignedString([]byte(SECRET_KEY))
if err != nil {
log.Println(err)
return
}
refreshToken, err := jwt.NewWithClaims(jwt.SigningMethodHS256, refreshClaims).SignedString([]byte(SECRET_KEY))
if err != nil {
log.Panicln(err)
return
}
log.Panicln(token, refreshToken)
return token, refreshToken, nil
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.