move getting session store to web context

This commit is contained in:
Anker Jam
2021-01-10 13:50:43 +08:00
parent 1f475585e5
commit 31f79c2ee2
4 changed files with 64 additions and 85 deletions

View File

@@ -2,7 +2,6 @@ package session
import (
"context"
"errors"
"github.com/beego/beego/v2/core/logs"
"github.com/beego/beego/v2/server/web"
webContext "github.com/beego/beego/v2/server/web/context"
@@ -11,12 +10,6 @@ import (
//Session maintain session for web service
//Session new a session storage and store it into webContext.Context
//
//params:
//ctx: pointer of beego web context
//storeKey: set the storage key in ctx.Input
//
//if you want to get session storage, just see GetStore
func Session(providerType session.ProviderType, options ...session.ManagerConfigOpt) web.FilterChain {
sessionConfig := session.NewManagerConfig(options...)
sessionManager, _ := session.NewManager(string(providerType), sessionConfig)
@@ -37,23 +30,6 @@ func Session(providerType session.ProviderType, options ...session.ManagerConfig
}
next(ctx)
}
}
}
//GetStore get session storage in beego web context
func GetStore(ctx *webContext.Context) (store session.Store, err error) {
if ctx == nil {
err = errors.New(`ctx is nil`)
return
}
if s := ctx.Input.CruSession; s != nil {
store = s
return
} else {
err = errors.New(`can not get a valid session store`)
return
}
}
}

View File

@@ -1,7 +1,6 @@
package session
import (
"context"
"github.com/beego/beego/v2/server/web"
webContext "github.com/beego/beego/v2/server/web/context"
"github.com/beego/beego/v2/server/web/session"
@@ -53,62 +52,3 @@ func TestSession(t *testing.T) {
testRequest(t, handler, "/dataset1/resource1", "GET", 200)
}
func TestGetStore(t *testing.T) {
handler := web.NewControllerRegister()
handler.InsertFilterChain(
"*",
Session(
session.ProviderMemory,
session.CfgCookieName(`go_session_id`),
session.CfgSetCookie(true),
session.CfgGcLifeTime(3600),
session.CfgMaxLifeTime(3600),
session.CfgSecure(false),
session.CfgCookieLifeTime(3600),
),
)
handler.InsertFilterChain(
"*",
func(next web.FilterFunc) web.FilterFunc {
return func(ctx *webContext.Context) {
var (
checkKey = `asodiuasdk1j)AS(87`
checkValue = `ASsd-09812-3`
store session.Store
err error
c = context.Background()
)
if store, err = GetStore(ctx); err == nil {
if store == nil {
t.Error(`store should not be nil`)
} else {
_ = store.Set(c, checkKey, checkValue)
}
} else {
t.Error(err)
}
next(ctx)
if store != nil {
if v := store.Get(c, checkKey); v != checkValue {
t.Error(v, `is not equals to`, checkValue)
}
} else {
t.Error(`store should not be nil`)
}
}
},
)
handler.Any("*", func(ctx *webContext.Context) {
ctx.Output.SetStatus(200)
})
testRequest(t, handler, "/dataset1/resource1", "GET", 200)
}