diff --git a/modules/session/db.go b/modules/session/db.go index eea7e2136e..57f658dfd6 100644 --- a/modules/session/db.go +++ b/modules/session/db.go @@ -84,6 +84,11 @@ func (s *DBStore) Flush() error { return nil } +// True if no keys have been set +func (s *DBStore) Empty() bool { + return len(s.data) == 0 +} + // DBProvider represents a DB session provider implementation. type DBProvider struct { maxLifetime int64 diff --git a/modules/session/redis.go b/modules/session/redis.go index cf84ef21d9..1e8c61da8b 100644 --- a/modules/session/redis.go +++ b/modules/session/redis.go @@ -103,6 +103,11 @@ func (s *RedisStore) Flush() error { return nil } +// True if no keys have been set +func (s *RedisStore) Empty() bool { + return len(s.data) == 0 +} + // RedisProvider represents a redis session provider implementation. type RedisProvider struct { c nosql.RedisClient diff --git a/modules/session/virtual.go b/modules/session/virtual.go index 1986ba64ad..cde9e60c4d 100644 --- a/modules/session/virtual.go +++ b/modules/session/virtual.go @@ -195,3 +195,8 @@ func (s *VirtualStore) Flush() error { s.data = make(map[any]any) return nil } + +// True if no keys have been set +func (s *VirtualStore) Empty() bool { + return len(s.data) == 0 +} diff --git a/routers/common/middleware.go b/routers/common/middleware.go index 7bc4890a43..5c8283e247 100644 --- a/routers/common/middleware.go +++ b/routers/common/middleware.go @@ -118,5 +118,6 @@ func Sessioner() func(next http.Handler) http.Handler { Secure: setting.SessionConfig.Secure, SameSite: setting.SessionConfig.SameSite, Domain: setting.SessionConfig.Domain, + DeferSetCookie: true, }) }