Rename 'maxlifetime' to 'maxLifeTime'
This commit is contained in:
12
zh/06.2.md
12
zh/06.2.md
@@ -38,15 +38,15 @@ type Manager struct {
|
|||||||
cookieName string //private cookiename
|
cookieName string //private cookiename
|
||||||
lock sync.Mutex // protects session
|
lock sync.Mutex // protects session
|
||||||
provider Provider
|
provider Provider
|
||||||
maxlifetime int64
|
maxLifeTime int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewManager(provideName, cookieName string, maxlifetime int64) (*Manager, error) {
|
func NewManager(provideName, cookieName string, maxLifeTime int64) (*Manager, error) {
|
||||||
provider, ok := provides[provideName]
|
provider, ok := provides[provideName]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName)
|
return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName)
|
||||||
}
|
}
|
||||||
return &Manager{provider: provider, cookieName: cookieName, maxlifetime: maxlifetime}, nil
|
return &Manager{provider: provider, cookieName: cookieName, maxLifeTime: maxLifeTime}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -128,7 +128,7 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se
|
|||||||
if err != nil || cookie.Value == "" {
|
if err != nil || cookie.Value == "" {
|
||||||
sid := manager.sessionId()
|
sid := manager.sessionId()
|
||||||
session, _ = manager.provider.SessionInit(sid)
|
session, _ = manager.provider.SessionInit(sid)
|
||||||
cookie := http.Cookie{Name: manager.cookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, MaxAge: int(manager.maxlifetime)}
|
cookie := http.Cookie{Name: manager.cookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, MaxAge: int(manager.maxLifeTime)}
|
||||||
http.SetCookie(w, &cookie)
|
http.SetCookie(w, &cookie)
|
||||||
} else {
|
} else {
|
||||||
sid, _ := url.QueryUnescape(cookie.Value)
|
sid, _ := url.QueryUnescape(cookie.Value)
|
||||||
@@ -214,8 +214,8 @@ func init() {
|
|||||||
func (manager *Manager) GC() {
|
func (manager *Manager) GC() {
|
||||||
manager.lock.Lock()
|
manager.lock.Lock()
|
||||||
defer manager.lock.Unlock()
|
defer manager.lock.Unlock()
|
||||||
manager.provider.SessionGC(manager.maxlifetime)
|
manager.provider.SessionGC(manager.maxLifeTime)
|
||||||
time.AfterFunc(time.Duration(manager.maxlifetime), func() { manager.GC() })
|
time.AfterFunc(time.Duration(manager.maxLifeTime), func() { manager.GC() })
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
我们可以看到GC充分利用了time包中的定时器功能,当超时`maxLifeTime`之后调用GC函数,这样就可以保证`maxLifeTime`时间内的session都是可用的,类似的方案也可以用于统计在线用户数之类的。
|
我们可以看到GC充分利用了time包中的定时器功能,当超时`maxLifeTime`之后调用GC函数,这样就可以保证`maxLifeTime`时间内的session都是可用的,类似的方案也可以用于统计在线用户数之类的。
|
||||||
|
|||||||
Reference in New Issue
Block a user