You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.2 KiB

package middleware
import (
"fmt"
"github.com/gin-gonic/gin"
"recook/internal/v2/lib/back"
"recook/internal/v2/lib/cache"
"recook/internal/v2/model/recook/manage"
"strconv"
)
func Authorize() gin.HandlerFunc {
return func(c *gin.Context) {
id, _ := strconv.Atoi(c.Request.Header.Get("X-Recook-ID"))
if id <= 0 {
back.Unauthorized(c)
c.Abort()
return
}
token := c.Request.Header.Get("X-Recook-Token")
if token == "" {
back.Unauthorized(c)
c.Abort()
return
}
cacheToken := cache.GetAdminLoginCache(uint(id))
var userInfo manage.RecookManageUserInfoModel
fmt.Println(cacheToken)
if len(cacheToken) == 0 {
// 缓存被清理了
userInfo = (&manage.RecookManageUserInfoModel{}).FindUserById(uint(id))
if userInfo.Id <= 0 {
// 账号错误
back.Unauthorized(c)
c.Abort()
return
}
cacheToken = userInfo.Token
cache.SetAdminLoginCache(userInfo.Id, token)
}
if cacheToken == token {
if userInfo.Id <= 0 {
userInfo = (&manage.RecookManageUserInfoModel{}).FindUserById(uint(id))
}
c.Set("manageUserInfo", userInfo)
c.Next()
} else {
back.Unauthorized(c)
c.Abort()
return
}
}
}