diff --git a/configuration.go b/configuration.go index 80556ac9..7ecb970a 100644 --- a/configuration.go +++ b/configuration.go @@ -310,6 +310,11 @@ func DefaultConfiguration() Configuration { // sixth is the DisableSubdomainPersistence which you can set it to true in order dissallow your q subdomains to have access to the session cook type SessionsConfiguration sessions.Config +// Set implements the OptionSetter of the sessions package +func (s SessionsConfiguration) Set(c *sessions.Config) { + *c = sessions.Config(s).Validate() +} + var ( // OptionSessionsCookie string, the session's client cookie name, for example: "qsessionid" OptionSessionsCookie = func(val string) OptionSet { @@ -388,6 +393,7 @@ func DefaultSessionsConfiguration() SessionsConfiguration { Expires: 0, GcDuration: DefaultSessionGcDuration, DisableSubdomainPersistence: false, + DisableAutoGC: true, } } diff --git a/iris.go b/iris.go index 2ad04131..dacca811 100644 --- a/iris.go +++ b/iris.go @@ -217,9 +217,12 @@ func New(setters ...OptionSetter) *Framework { }) } - // websocket + // websocket & sessions { s.Websocket = NewWebsocketServer() // in order to be able to call $instance.Websocket.OnConnection + + // set the sessions, look .initialize for its GC + s.sessions = sessions.New(sessions.DisableAutoGC(true)) } // routing & http server @@ -236,9 +239,6 @@ func New(setters ...OptionSetter) *Framework { s.Available = make(chan bool) } - // set empty sessions , look .initialize for its Init - s.sessions = sessions.Empty() - return s } @@ -268,7 +268,7 @@ func (s *Framework) initialize() { s.templates.Reload = s.Config.IsDevelopment // check and prepare the templates - if len(s.templates.Entries) == 0 { // no template engine is registered, let's use the default + if len(s.templates.Entries) == 0 { // no template engines were registered, let's use the default s.UseTemplate(html.New()) } @@ -279,7 +279,8 @@ func (s *Framework) initialize() { // init, starts the session manager if the Cookie configuration field is not empty if s.Config.Sessions.Cookie != "" { - s.sessions.Init(sessions.Config(s.Config.Sessions)) + // re-set the configuration field for any case + s.sessions.Set(s.Config.Sessions, sessions.DisableAutoGC(false)) } if s.Config.Websocket.Endpoint != "" {