diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a259efc..6e9c6c1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,4 +3,5 @@ - Remove `duration` from prometheus labels. [4391](https://github.com/beego/beego/pull/4391) - Fix `unknown escape sequence` in generated code. [4385](https://github.com/beego/beego/pull/4385) - Using fixed name `commentRouter.go` as generated file name. [4385](https://github.com/beego/beego/pull/4385) -- Fix 4383: ORM Adapter produces panic when using orm.RegisterModelWithPrefix. [4386](https://github.com/beego/beego/pull/4386) \ No newline at end of file +- Fix 4383: ORM Adapter produces panic when using orm.RegisterModelWithPrefix. [4386](https://github.com/beego/beego/pull/4386) +- Support session Filter chain. [4404](https://github.com/beego/beego/pull/4404) \ No newline at end of file diff --git a/server/web/filter/session/filter.go b/server/web/filter/session/filter.go index 685f86c1..1776d604 100644 --- a/server/web/filter/session/filter.go +++ b/server/web/filter/session/filter.go @@ -29,7 +29,7 @@ func Session(providerType session.ProviderType, options ...session.ManagerConfig } if sess, err := sessionManager.SessionStart(ctx.ResponseWriter, ctx.Request); err != nil { - logs.Warning(`init session error:%s`, err.Error()) + logs.Error(`init session error:%s`, err.Error()) } else { //release session at the end of request defer sess.SessionRelease(context.Background(), ctx.ResponseWriter) diff --git a/server/web/session/session.go b/server/web/session/session.go index 911f45fe..ca0407e8 100644 --- a/server/web/session/session.go +++ b/server/web/session/session.go @@ -279,10 +279,7 @@ func (manager *Manager) GetSessionStore(sid string) (sessions Store, err error) // it can do gc in times after gc lifetime. func (manager *Manager) GC() { manager.provider.SessionGC(nil) - ticker := time.NewTicker(time.Duration(manager.config.Gclifetime) * time.Second) - for range ticker.C { - manager.provider.SessionGC(nil) - } + time.AfterFunc(time.Duration(manager.config.Gclifetime)*time.Second, func() { manager.GC() }) } // SessionRegenerateID Regenerate a session id for this SessionStore who's id is saving in http request.