add extra sessopts and any additional opts
This commit is contained in:
parent
59aa49d2e9
commit
99e26546d7
4 changed files with 23 additions and 6 deletions
18
session.go
18
session.go
|
@ -85,16 +85,24 @@ type Manager struct {
|
||||||
secure bool
|
secure bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SessOpts set session options or NewManager
|
||||||
|
type SessOpts struct {
|
||||||
|
ProviderName string
|
||||||
|
CookieName string
|
||||||
|
MaxLifetime int64
|
||||||
|
Ssl bool
|
||||||
|
}
|
||||||
|
|
||||||
// NewManager create new *Manager for provideName, cookieName and maxlifetime in seconds
|
// NewManager create new *Manager for provideName, cookieName and maxlifetime in seconds
|
||||||
func NewManager(providerName, cookieName string, maxlifetime int64, ssl bool) (*Manager, error) {
|
func NewManager(sopts SessOpts, adopts any) (*Manager, error) {
|
||||||
var provider Provider
|
var provider Provider
|
||||||
var ok bool
|
var ok bool
|
||||||
if provider, ok = provides[providerName]; !ok {
|
if provider, ok = provides[sopts.ProviderName]; !ok {
|
||||||
return nil, fmt.Errorf("session: Provider: %q not found (forgotten import?)", providerName)
|
return nil, fmt.Errorf("session: Provider: %q not found (forgotten import?)", sopts.ProviderName)
|
||||||
}
|
}
|
||||||
m := &Manager{
|
m := &Manager{
|
||||||
cookieName: cookieName, provider: provider,
|
cookieName: sopts.CookieName, provider: provider,
|
||||||
maxlifetime: maxlifetime, secure: ssl,
|
maxlifetime: sopts.MaxLifetime, secure: sopts.Ssl,
|
||||||
}
|
}
|
||||||
go m.GC()
|
go m.GC()
|
||||||
return m, nil
|
return m, nil
|
||||||
|
|
2
storage/file/file.go
Normal file
2
storage/file/file.go
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
// Package file implements sessions saved into filesystem persistently encoded using gob
|
||||||
|
package file
|
|
@ -120,6 +120,8 @@ func (pder *ProviderMemory) RegenerateID(oldsid, newsid string) (err error) {
|
||||||
defer pder.lock.Unlock()
|
defer pder.lock.Unlock()
|
||||||
if ssel, ok := pder.sessions[oldsid]; ok {
|
if ssel, ok := pder.sessions[oldsid]; ok {
|
||||||
ssel.Value.(*SessionMemory).sid = newsid
|
ssel.Value.(*SessionMemory).sid = newsid
|
||||||
|
le := pder.sessions[oldsid]
|
||||||
|
pder.list.Remove(le)
|
||||||
delete(pder.sessions, oldsid)
|
delete(pder.sessions, oldsid)
|
||||||
pder.sessions[newsid] = ssel
|
pder.sessions[newsid] = ssel
|
||||||
}
|
}
|
||||||
|
|
|
@ -287,7 +287,12 @@ func TestRunAll(t *testing.T) {
|
||||||
var err error
|
var err error
|
||||||
jar, _ := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
|
jar, _ := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List})
|
||||||
testclient.Jar = jar
|
testclient.Jar = jar
|
||||||
if sm, err = session.NewManager(pn, sid, lifet, true); err != nil {
|
sessopts := session.SessOpts{
|
||||||
|
ProviderName: "memory", CookieName: sid,
|
||||||
|
MaxLifetime: 180, Ssl: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
if sm, err = session.NewManager(sessopts, nil); err != nil {
|
||||||
t.Errorf("Session provider %s failed initialize err: %v", pn, err)
|
t.Errorf("Session provider %s failed initialize err: %v", pn, err)
|
||||||
}
|
}
|
||||||
fns := []func(t *testing.T){t1, t2, t3, t4, t5, t6, t7, t8, t9}
|
fns := []func(t *testing.T){t1, t2, t3, t4, t5, t6, t7, t8, t9}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue