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 session:1.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) }