// Start starts a session by generating new one // or retrieve existence one by reading session ID from HTTP request if it's valid. func (m *Manager) Start(req *HttpLib.Request, res *HttpLib.Response) (RawStore, error) { sid := req.GetCookie(m.opt.CookieName) if len(sid) > 0 && m.provider.Exist(sid) { return m.provider.Read(sid) } sid = m.sessionId() sess, err := m.provider.Read(sid) if err != nil { return nil, err } cookie := &http.Cookie{ Name: m.opt.CookieName, Value: sid, Path: m.opt.CookiePath, HttpOnly: true, Secure: m.opt.Secure, Domain: m.opt.Domain, } if m.opt.CookieLifeTime >= 0 { cookie.MaxAge = m.opt.CookieLifeTime } http.SetCookie(res, cookie) req.AddCookie(cookie) return sess, nil }
// RegenerateId regenerates a session store from old session ID to new one. func (m *Manager) RegenerateId(req *HttpLib.Request, res *HttpLib.Response) (sess RawStore, err error) { sid := m.sessionId() oldsid := req.GetCookie(m.opt.CookieName) sess, err = m.provider.Regenerate(oldsid, sid) if err != nil { return nil, err } ck := &http.Cookie{ Name: m.opt.CookieName, Value: sid, Path: m.opt.CookiePath, HttpOnly: true, Secure: m.opt.Secure, Domain: m.opt.Domain, } if m.opt.CookieLifeTime >= 0 { ck.MaxAge = m.opt.CookieLifeTime } http.SetCookie(res, ck) req.AddCookie(ck) return sess, nil }