A session store backend for gorilla/sessions - src.
Depends on the Redigo Redis library.
go get github.com/boj/redistore
Available on godoc.org.
See the repository for full documentation on underlying interface.
package main
import (
"log"
"net/http"
"github.com/boj/redistore"
"github.com/gorilla/sessions"
)
func main() {
// Fetch new store.
store, err := redistore.NewRediStore(10, "tcp", ":6379", "", []byte("secret-key"))
if err != nil {
panic(err)
}
defer store.Close()
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// Get a session.
session, err := store.Get(r, "session-key")
if err != nil {
log.Println(err.Error())
return
}
// Add a value.
session.Values["foo"] = "bar"
// Save.
if err = sessions.Save(r, w); err != nil {
log.Fatalf("Error saving session: %v", err)
}
// Delete session.
session.Options.MaxAge = -1
if err = sessions.Save(r, w); err != nil {
log.Fatalf("Error saving session: %v", err)
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
Sets the maximum length of new sessions. If the length is 0, there is no limit to the size of a session.
store.SetMaxLength(4096)
Sets the prefix for session keys in Redis.
store.SetKeyPrefix("myprefix_")
Sets the serializer for session data. The default is GobSerializer.
store.SetSerializer(redistore.JSONSerializer{})
Sets the maximum age, in seconds, of the session record both in the database and in the browser.
store.SetMaxAge(86400 * 7) // 7 days
Serializes session data to JSON.
type JSONSerializer struct{}
func (s JSONSerializer) Serialize(ss *sessions.Session) ([]byte, error) {
// Implementation
}
func (s JSONSerializer) Deserialize(d []byte, ss *sessions.Session) error {
// Implementation
}
Serializes session data using the gob package.
type GobSerializer struct{}
func (s GobSerializer) Serialize(ss *sessions.Session) ([]byte, error) {
// Implementation
}
func (s GobSerializer) Deserialize(d []byte, ss *sessions.Session) error {
// Implementation
}
This project is licensed under the MIT License - see the LICENSE file for details.