add session check

This commit is contained in:
landaiqing
2024-10-17 16:21:46 +08:00
parent 5bfca64315
commit b5d88a7ccd
5 changed files with 70 additions and 8 deletions

View File

@@ -0,0 +1,40 @@
package middleware
import (
ginI18n "github.com/gin-contrib/i18n"
"github.com/gin-gonic/gin"
"schisandra-cloud-album/common/constant"
"schisandra-cloud-album/common/result"
"schisandra-cloud-album/utils"
)
// SessionCheckMiddleware session检查中间件
func SessionCheckMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
session := utils.GetSession(c, constant.SessionKey)
if session == nil {
result.FailWithCodeAndMessage(403, ginI18n.MustGetMessage(c, "AuthVerifyExpired"), c)
c.Abort()
return
}
userIdAny, exists := c.Get("userId")
if !exists {
result.FailWithCodeAndMessage(403, ginI18n.MustGetMessage(c, "AuthVerifyExpired"), c)
c.Abort()
return
}
userId, ok := userIdAny.(*string)
if !ok {
result.FailWithCodeAndMessage(403, ginI18n.MustGetMessage(c, "AuthVerifyExpired"), c)
c.Abort()
return
}
if *userId != *session.UID {
result.FailWithCodeAndMessage(403, ginI18n.MustGetMessage(c, "AuthVerifyExpired"), c)
c.Abort()
return
}
c.Next()
}
}