46 lines
946 B
Go
46 lines
946 B
Go
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)
|
||
}
|