Files
cloud/internal/middleware/session.go

46 lines
946 B
Go
Raw Normal View History

2026-01-26 17:38:06 +08:00
package middleware
import (
"log"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
)
var sessionID string
func CheckSession() gin.HandlerFunc {
return func(ctx *gin.Context) {
session := sessions.Default(ctx)
//ctx.Next()
//return
token := session.Get(sessionID)
log.Println("session:", sessionID, token)
// 未登录时重定向到登录页
if token == nil {
ctx.Redirect(301, "/sign-in")
return
}
// set simple var
ctx.Set("SESSION", token)
// validate session1.check cache 2.check database // TODO
ctx.Next()
}
}
func EnableCookieSession(name, key string) gin.HandlerFunc {
store := cookie.NewStore([]byte(name))
store.Options(sessions.Options{
Path: "/",
MaxAge: 86400, // 24小时
HttpOnly: true,
Secure: false, // 在使用HTTPS的生产环境中设置为true
})
sessionID = name
return sessions.Sessions(key, store)
}