mongostore

package module
v0.0.0-...-bc6a8d5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2019 License: BSD-3-Clause Imports: 11 Imported by: 0

README

mongostore

Gorilla's Session store implementation with MongoDB official driver

Requirements

Depends on the mongo-driver library.

Installation

go get github.com/kidstuff/mongostore

Documentation

Available on godoc.org.

Example
    func foo(rw http.ResponseWriter, req *http.Request) {
        // Fetch new store.
        ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
        client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
        if err != nil {
            panic(err)
        }
        defer client.Disconnect(ctx)

        store := mongostore.NewMongoStore(client.Database("test").Collection("test_session"), 3600, true,[]byte("secret-key"))

        // Get a session.
        session, err := store.Get(req, "session-key")
        if err != nil {
            log.Println(err.Error())
        }

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

        // Save.
        if err = sessions.Save(req, rw); err != nil {
            log.Printf("Error saving session: %v", err)
        }

        fmt.Fprintln(rw, "ok")
    }

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidID = errors.New("store: invalid session id")
)

ErrInvalidID ...

Functions

This section is empty.

Types

type CookieToken

type CookieToken struct{}

func (*CookieToken) GetToken

func (c *CookieToken) GetToken(req *http.Request, name string) (string, error)

func (*CookieToken) SetToken

func (c *CookieToken) SetToken(rw http.ResponseWriter, name, value string,
	options *sessions.Options)

type MongoStore

type MongoStore struct {
	Codecs  []securecookie.Codec
	Options *sessions.Options
	Token   TokenGetSeter
	// contains filtered or unexported fields
}

MongoStore stores sessions in MongoDB

func NewMongoStore

func NewMongoStore(c *mongo.Collection, maxAge int32, ensureTTL bool,
	keyPairs ...[]byte) *MongoStore

NewMongoStore returns a new MongoStore. Set ensureTTL to true let the database auto-remove expired object by maxAge.

func (*MongoStore) Get

func (m *MongoStore) Get(r *http.Request, name string) (
	*sessions.Session, error)

Get registers and returns a session for the given name and session store. It returns a new session if there are no sessions registered for the name.

func (*MongoStore) MaxAge

func (m *MongoStore) MaxAge(age int)

MaxAge sets the maximum age for the store and the underlying cookie implementation. Individual sessions can be deleted by setting Options.MaxAge = -1 for that session.

func (*MongoStore) New

func (m *MongoStore) New(r *http.Request, name string) (
	*sessions.Session, error)

New returns a session for the given name without adding it to the registry.

func (*MongoStore) Save

func (m *MongoStore) Save(r *http.Request, w http.ResponseWriter,
	session *sessions.Session) error

Save saves all sessions registered for the current request.

type Session

type Session struct {
	ID       *primitive.ObjectID `bson:"_id,omitempty"`
	Data     string
	Modified time.Time
}

Session object store in MongoDB

type TokenGetSeter

type TokenGetSeter interface {
	GetToken(req *http.Request, name string) (string, error)
	SetToken(rw http.ResponseWriter, name, value string, options *sessions.Options)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL