From b29bd993d4e2f03b7ec6a61761fa7806458365b3 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Mon, 16 Dec 2024 14:24:59 +0100 Subject: fix session twice set-cookie bug fixed --- web/session/session.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'web/session') diff --git a/web/session/session.go b/web/session/session.go index f5055efd..13aedad8 100644 --- a/web/session/session.go +++ b/web/session/session.go @@ -10,38 +10,41 @@ import ( ) const ( - loginUser = "LOGIN_USER" - defaultPath = "/" + loginUserKey = "LOGIN_USER" + defaultPath = "/" ) func init() { gob.Register(model.User{}) } -func SetLoginUser(c *gin.Context, user *model.User) error { +func SetLoginUser(c *gin.Context, user *model.User) { + if user == nil { + return + } s := sessions.Default(c) - s.Set(loginUser, user) - return s.Save() + s.Set(loginUserKey, *user) } -func SetMaxAge(c *gin.Context, maxAge int) error { +func SetMaxAge(c *gin.Context, maxAge int) { s := sessions.Default(c) s.Options(sessions.Options{ Path: defaultPath, MaxAge: maxAge, HttpOnly: true, }) - return s.Save() } func GetLoginUser(c *gin.Context) *model.User { s := sessions.Default(c) - obj := s.Get(loginUser) + obj := s.Get(loginUserKey) if obj == nil { return nil } user, ok := obj.(model.User) if !ok { + + s.Delete(loginUserKey) return nil } return &user @@ -51,7 +54,7 @@ func IsLogin(c *gin.Context) bool { return GetLoginUser(c) != nil } -func ClearSession(c *gin.Context) error { +func ClearSession(c *gin.Context) { s := sessions.Default(c) s.Clear() s.Options(sessions.Options{ @@ -59,5 +62,4 @@ func ClearSession(c *gin.Context) error { MaxAge: -1, HttpOnly: true, }) - return s.Save() } -- cgit v1.2.3