From ab9eca674dff3e0947104d76419daec48b696292 Mon Sep 17 00:00:00 2001 From: Matt Silverlock Date: Tue, 11 Aug 2015 20:13:41 +0800 Subject: [PATCH] Provide method to set MaxAge on underlying cookies. - Addresses https://github.com/gorilla/sessions/issues/48 --- pgstore.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pgstore.go b/pgstore.go index dcef38f..fe0f858 100644 --- a/pgstore.go +++ b/pgstore.go @@ -90,6 +90,8 @@ func (db *PGStore) New(r *http.Request, name string) (*sessions.Session, error) } } + db.MaxAge(db.Options.MaxAge) + return session, err } @@ -136,6 +138,20 @@ func (s *PGStore) MaxLength(l int) { } } +// MaxAge sets the maximum age for the store and the underlying cookie +// implementation. Individual sessions can be deleted by setting Options.MaxAge +// = -1 for that session. +func (db *PGStore) MaxAge(age int) { + db.Options.MaxAge = age + + // Set the maxAge for each securecookie instance. + for _, codec := range db.Codecs { + if sc, ok := codec.(*securecookie.SecureCookie); ok { + sc.MaxAge(age) + } + } +} + //load fetches a session by ID from the database and decodes its content into session.Values func (db *PGStore) load(session *sessions.Session) error { var s Session