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條經驗 獲得超8個贊
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 關注
- 462 瀏覽
添加回答
舉報