// Save adds a single session to the response. func (s *redisStore) Save(r *http.Request, w http.ResponseWriter, session *sessions.Session) error { var err error if session.ID == "" { var i uint64 i, err = NoeqClient.GenOne() if err != nil { return err } session.ID = strconv.FormatUint(i, 10) } if err = s.save(session); err != nil { return err } var encoded string encoded, err = securecookie.EncodeMulti(session.Name(), &session.ID, s.Codecs...) if err != nil { return err } options := s.Options if session.Options != nil { options = session.Options } cookie := &http.Cookie{ Name: session.Name(), Value: encoded, Path: options.Path, Domain: options.Domain, MaxAge: options.MaxAge, Secure: options.Secure, HttpOnly: options.HttpOnly, } http.SetCookie(w, cookie) context.DefaultContext.Clear(r) return nil }
// Save adds a single session to the response. func (s *DatastoreStore) Save(r *http.Request, w http.ResponseWriter, session *sessions.Session) error { if session.ID == "" { session.ID = string(securecookie.GenerateRandomKey(32)) } if err := s.save(r, session); err != nil { return err } encoded, err := securecookie.EncodeMulti(session.Name(), session.ID, s.Codecs...) if err != nil { return err } http.SetCookie(w, sessions.NewCookie(session.Name(), encoded, session.Options)) return nil }