// NewCookieStore returns a new CookieStore. // // Keys are defined in pairs to allow key rotation, but the common case is // to set a single authentication key and optionally an encryption key. // // The first key in a pair is used for authentication and the second for // encryption. The encryption key can be set to nil or omitted in the last // pair, but the authentication key is required in all pairs. // // It is recommended to use an authentication key with 32 or 64 bytes. // The encryption key, if set, must be either 16, 24, or 32 bytes to select // AES-128, AES-192, or AES-256 modes. // // Use the convenience function securecookie.GenerateRandomKey() to create // strong keys. func NewCookieStore(keyPairs ...[]byte) *CookieStore { return &CookieStore{ Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &Options{ Path: "/", MaxAge: 86400 * 30, }, } }
func newRedisStore(keyPairs ...[]byte) *redisStore { return &redisStore{ Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &sessions.Options{ Path: "/", MaxAge: sessionExpire, }, } }
// NewDatastoreStore returns a new DatastoreStore. // // The kind argument is the kind name used to store the session data. // If empty it will use "Session". // // See NewCookieStore() for a description of the other parameters. func NewDatastoreStore(kind string, keyPairs ...[]byte) *DatastoreStore { if kind == "" { kind = "Session" } return &DatastoreStore{ Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &sessions.Options{ Path: "/", MaxAge: 86400 * 30, }, kind: kind, } }
// NewMemcacheStore returns a new MemcacheStore. // // The keyPrefix argument is the prefix used for memcache keys. If empty it // will use "gorilla.appengine.sessions.". // // See NewCookieStore() for a description of the other parameters. func NewMemcacheStore(keyPrefix string, keyPairs ...[]byte) *MemcacheStore { if keyPrefix == "" { keyPrefix = "gorilla.appengine.sessions." } return &MemcacheStore{ Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &sessions.Options{ Path: "/", MaxAge: 86400 * 30, }, prefix: keyPrefix, } }
func NewMongoStore(DBCollection *mgo.Collection, keyPairs ...[]byte) *MongoStore { index := mgo.Index{Unique: true, Key: []string{"sessionid"}} DBCollection.EnsureIndex(index) return &MongoStore{ Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &sessions.Options{ Path: "/", MaxAge: 86400 * 30, }, DBCollection: DBCollection, } }
// NewFilesystemStore returns a new FilesystemStore. // // The path argument is the directory where sessions will be saved. If empty // it will use os.TempDir(). // // See NewCookieStore() for a description of the other parameters. func NewFilesystemStore(path string, keyPairs ...[]byte) *FilesystemStore { if path == "" { path = os.TempDir() } if path[len(path)-1] != '/' { path += "/" } return &FilesystemStore{ Codecs: securecookie.CodecsFromPairs(keyPairs...), Options: &Options{ Path: "/", MaxAge: 86400 * 30, }, path: path, } }