自动更新cookie

This commit is contained in:
2025-11-14 20:10:55 +08:00
parent c6c7496449
commit 710d72aefe
14 changed files with 221 additions and 39 deletions
+4 -1
View File
@@ -5,6 +5,9 @@
"jsonErr":-3,
"userNameDup":-4,
"userNameNoFund":-41,
"userPassIncorrect":-42
"userPassIncorrect":-42,
"userCookieError":-44,
"userCookieNotFund":-45,
"userCookieExpired":-46
}
+26
View File
@@ -4,6 +4,7 @@ import (
"crypto/md5"
"crypto/rand"
"encoding/hex"
"time"
)
@@ -55,3 +56,28 @@ func HashUserPass(user *TabUser_) {
}
}
func IsExpired(expireTime time.Time) bool {
return expireTime.Before(time.Now())
}
func CheckCookiesAndUpdate(cookie *TabCookie_) bool {
if !IsExpired(cookie.ExpiresAt) {
if cookie.Remember {
cookiewhere := TabCookie_{
ID: cookie.ID,
}
cookieupdata := TabCookie_{
UpdatedAt: time.Now(),
ExpiresAt: time.Now().Add(time.Duration(ConfigsUser.CookieTimeout) * time.Second),
}
DB.Where(&cookiewhere).Updates(&cookieupdata)
}
return true
} else {
//以过期
return false
}
//return false
}
+1 -1
View File
@@ -31,7 +31,7 @@ func SeparateData(ctx *gin.Context) (map[string]interface{}, string) {
if err := ctx.ShouldBindJSON(&jsonData); err == nil {
//分离数据
cookie, ok := jsonData["cookie"].(string)
cookie, ok := jsonData["userCookieValue"].(string)
if !ok {
cookie = ""
}
+41
View File
@@ -73,6 +73,47 @@ func ApiUser(r *gin.RouterGroup) {
r.POST("/test", func(ctx *gin.Context) {
ReturnJson(ctx, "apiOK", nil)
})
//通过cookie获取用户info
r.POST("/getinfo", func(ctx *gin.Context) {
_, cookieval := SeparateData(ctx)
//fmt.Println("cookieis" + cookieval)
if cookieval != "" {
cookie := models.TabCookie_{
Value: cookieval,
}
if models.DB.Where(&cookie).First(&cookie).Error == nil {
//找到cookie,验证cookie有效性,以及更新cookie
if models.CheckCookiesAndUpdate(&cookie) {
//cookie有效
//返回最新cookie
redata := map[string]interface{}{
"cookie": cookie,
}
//载入用户info
userInfo := models.TabFileInfo_{
UserID: cookie.UserID,
}
if models.DB.Where(&userInfo).First(&userInfo).Error == nil {
redata["userInfo"] = userInfo
} else {
redata["userInfo"] = nil
}
ReturnJson(ctx, "apiOK", redata)
} else {
ReturnJson(ctx, "userCookieExpired", nil)
}
} else {
ReturnJson(ctx, "userCookieNotFund", nil)
}
} else {
ReturnJson(ctx, "userCookieError", nil)
}
})
//用户登陆
r.POST("/login", func(ctx *gin.Context) {
var loginuser From_user_login
+4 -4
View File
@@ -6,10 +6,10 @@ func ReturnJson(ctx *gin.Context, errMsg string, data map[string]interface{}) {
var errCode = ErrorCode[errMsg]
returnData := map[string]interface{}{}
cookie, have_cookie := ctx.Get("cookie")
if have_cookie {
returnData["cookie"] = cookie
}
// cookie, have_cookie := ctx.Get("cookie")
// if have_cookie {
// returnData["cookie"] = cookie
// }
returnData["err_code"] = errCode
returnData["err_msg"] = errMsg