mongostore

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

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

Go to latest
Published: Apr 7, 2021 License: BSD-3-Clause Imports: 7 Imported by: 0

README

mongostore

Gorilla's Session store implementation with MongoDB using the legacy (unmantained) mgo library

This repository is meant to give some backwards compatibility to some projects that can't upgrade to other MongoDB driver at the moment. If you need/want to use the more up to date mgo library check the original library from where this one derives.

Requirements

Depends on the unmantained mgo library.

Installation

go get github.com/TykTechnologies/mongostore

Documentation

Available on godoc.org.

Example
    func foo(rw http.ResponseWriter, req *http.Request) {
        // Fetch new store.
        dbsess, err := mgo.Dial("localhost")
        if err != nil {
            panic(err)
        }
        defer dbsess.Close()

        store := mongostore.NewMongoStore(dbsess.DB("test").C("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("mgostore: invalid session id")
)

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 *mgo.Collection, maxAge int, 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       bson.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