From bc02dc02857e9db8aba7b49d4713051834782bd2 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 12 Sep 2024 15:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9token=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/jwt.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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)