4 回答
TA贡献1864条经验 获得超6个赞
ExpiresAt
要求数据类型为*time.Time
,并且函数Unix()
以秒为单位返回时间int64
。
我建议您使用该软件包github.com/golang-jwt/jwt
而不是您现在使用的软件包,该软件包已不再维护。
TA贡献1811条经验 获得超5个赞
在 github.com/golang-jwt/jwt/v4 不推荐使用 StandardClaims 类型,您应该将 StandardClaims 替换为 RegisteredClaims。
关于Cannot use 'now.Add(time.Hour * 24).Unix()' (type int64) as the type Time.您需要使用 NumericDate 类型,因此您的代码将如下所示:
claims := &jwt.RegisteredClaims{
Issuer: "Test",
ExpiresAt: &jwt.NumericDate{now.Add(time.Hour * 24)},
}
TA贡献2039条经验 获得超7个赞
func GenerateToken(username, password string) (string, error) {
nowTime := time.Now()
expireTime := nowTime.Add(12 * time.Hour)
claims := Claims{
username,
password,
jwt.RegisteredClaims{
ExpiresAt: jwt.NewNumericDate(expireTime),
Issuer: "test",
},
}
tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
token, err := tokenClaims.SignedString(jwtSecret)
return token, err
}
TA贡献1909条经验 获得超7个赞
你的代码是好的问题是你的包的导入你可以改变导入
从
"github.com/dgrijalva/jwt-go/v4"
至
"github.com/dgrijalva/jwt-go"
- 4 回答
- 0 关注
- 390 浏览
添加回答
举报