diff --git a/utils/jwt.go b/utils/jwt.go index 81ea789..23f6ab3 100644 --- a/utils/jwt.go +++ b/utils/jwt.go @@ -1,6 +1,7 @@ package utils import ( + "errors" "github.com/golang-jwt/jwt/v5" "time" "vote-api/config" @@ -13,11 +14,18 @@ type Token struct { // NewJWT GenerateJWT 生成JWT func (t Token) NewJWT() (string, error) { - ttl := time.Duration(config.C.Jwt.Ttl) + now := time.Now() + year, month, day := now.Date() + location := now.Location() + validTime := time.Date(year, month, day, 23, 59, 59, 0, location) + duration := validTime.Sub(now) + if duration < 0 { + return "", errors.New("登录失败") + } - t.RegisteredClaims.ExpiresAt = jwt.NewNumericDate(time.Now().Add(ttl * time.Hour)) // 过期时间24小时 - t.RegisteredClaims.IssuedAt = jwt.NewNumericDate(time.Now()) // 签发时间 - t.RegisteredClaims.NotBefore = jwt.NewNumericDate(time.Now()) // 生效时间 + t.RegisteredClaims.ExpiresAt = jwt.NewNumericDate(time.Now().Add(duration)) // 过期时间24小时 + t.RegisteredClaims.IssuedAt = jwt.NewNumericDate(time.Now()) // 签发时间 + t.RegisteredClaims.NotBefore = jwt.NewNumericDate(time.Now()) // 生效时间 // 使用HS256签名算法 token := jwt.NewWithClaims(jwt.SigningMethodHS256, t)