Session store using Bolt
Find a file
2014-06-18 01:46:12 +09:00
reaper Update reaper/reaper_test.go 2014-06-18 01:46:12 +09:00
shared Add tests 2014-06-17 17:53:24 +09:00
store Update reaper/reaper_test.go 2014-06-18 01:46:12 +09:00
.gitignore Update store/store_test.go 2014-06-18 00:19:04 +09:00
LICENSE Initial commit 2014-06-13 18:46:18 +09:00
Makefile Add a reaper 2014-06-15 01:15:10 +09:00
README.md Update README.md 2014-06-17 18:05:52 +09:00
wercker.yml Update wercker.yml 2014-06-17 16:56:36 +09:00

BoltStore - Session store using Bolt

wercker status GoDoc Coverage Status

About

BoltStore is a session store using Bolt. This store implements the gorilla/sessions package's Store interface.

Installation

go get github.com/yosssi/boltstore/...

Example

package main

import (
	"fmt"
	"net/http"

	"github.com/boltdb/bolt"
	"github.com/gorilla/sessions"
	"github.com/yosssi/boltstore/reaper"
	"github.com/yosssi/boltstore/store"
)

var db *bolt.DB

func handler(w http.ResponseWriter, r *http.Request) {
	if r.URL.Path[1:] == "favicon.ico" {
		return
	}

	// Fetch a new store.
	str, err := store.New(
		db,
		store.Config{
			SessionOptions: sessions.Options{
				MaxAge: 60 * 60 * 24 * 30, // 30days
			},
		},
		[]byte("secret-key"),
	)

	// Get a session.
	session, err := str.Get(r, "session-key")
	if err != nil {
		panic(err)
	}

	// Add a value.
	session.Values["foo"] = "bar"

	// Save the session.
	if err := sessions.Save(r, w); err != nil {
		panic(err)
	}

	// Delete the session.
	session.Options.MaxAge = -1
	if err := sessions.Save(r, w); err != nil {
		panic(err)
	}

	fmt.Fprintf(w, "Hello BoltStore")
}

func main() {
	// Open a Bolt database.
	db, _ = bolt.Open("./sessions.db", 0666)
	defer db.Close()
	// Invoke a reaper which removes expired sessions.
	defer reaper.Quit(reaper.Run(db, reaper.Options{}))
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

Documentation