session

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2016 License: BSD-2-Clause Imports: 25 Imported by: 0

README

Session

A branch is based on beego session

GoDoc

Session is a Go session manager. It can use many session providers. Just like the database/sql and database/sql/driver.

Get

$ go get -u gopkg.in/session.v1

Usage

var globalSessions *session.Manager
Memory Store
func init() {
    globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid","gclifetime":3600}`)
    go globalSessions.GC()
}
File Store
func init() {
    globalSessions, _ = session.NewManager("file",`{"cookieName":"gosessionid","gclifetime":3600,"ProviderConfig":"./tmp"}`)
    go globalSessions.GC()
}
func init() {
    globalSessions, _ = session.NewManager(
        "cookie", `{"cookieName":"gosessionid","enableSetCookie":false,"gclifetime":3600,"ProviderConfig":"{\"cookieName\":\"gosessionid\",\"securityKey\":\"beegocookiehashkey\"}"}`)
    go globalSessions.GC()
}

License

Copyright (c) 2016, Session
All rights reserved.

Documentation

Overview

Package session provider

Usage: import(

"github.com/astaxie/beego/session"

)

	func init() {
     globalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid", "enableSetCookie,omitempty": true, "gclifetime":3600, "maxLifetime": 3600, "secure": false, "cookieLifeTime": 3600, "providerConfig": ""}`)
		go globalSessions.GC()
	}

more docs: http://beego.me/docs/module/session.md

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DecodeGob

func DecodeGob(encoded []byte) (map[interface{}]interface{}, error)

DecodeGob decode data to map

func EncodeGob

func EncodeGob(obj map[interface{}]interface{}) ([]byte, error)

EncodeGob encode the obj to gob

func RandomCreateBytes

func RandomCreateBytes(n int, alphabets ...byte) []byte

RandomCreateBytes generate random []byte by specify chars.

func Register

func Register(name string, provide Provider)

Register makes a session provide available by the provided name. If Register is called twice with the same name or if driver is nil, it panics.

Types

type CookieProvider

type CookieProvider struct {
	// contains filtered or unexported fields
}

CookieProvider Cookie session provider

func (*CookieProvider) SessionAll

func (pder *CookieProvider) SessionAll() int

SessionAll Implement method, return 0.

func (*CookieProvider) SessionDestroy

func (pder *CookieProvider) SessionDestroy(sid string) error

SessionDestroy Implement method, no used.

func (*CookieProvider) SessionExist

func (pder *CookieProvider) SessionExist(sid string) bool

SessionExist Cookie session is always existed

func (*CookieProvider) SessionGC

func (pder *CookieProvider) SessionGC()

SessionGC Implement method, no used.

func (*CookieProvider) SessionInit

func (pder *CookieProvider) SessionInit(maxlifetime int64, config string) error

SessionInit Init cookie session provider with max lifetime and config json. maxlifetime is ignored. json config:

securityKey - hash string
blockKey - gob encode hash string. it's saved as aes crypto.
securityName - recognized name in encoded cookie string
cookieName - cookie name
maxage - cookie max life time.

func (*CookieProvider) SessionRead

func (pder *CookieProvider) SessionRead(sid string) (Store, error)

SessionRead Get SessionStore in cooke. decode cooke string to map and put into SessionStore with sid.

func (*CookieProvider) SessionRegenerate

func (pder *CookieProvider) SessionRegenerate(oldsid, sid string) (Store, error)

SessionRegenerate Implement method, no used.

func (*CookieProvider) SessionUpdate

func (pder *CookieProvider) SessionUpdate(sid string) error

SessionUpdate Implement method, no used.

type CookieSessionStore

type CookieSessionStore struct {
	// contains filtered or unexported fields
}

CookieSessionStore Cookie SessionStore

func (*CookieSessionStore) Delete

func (st *CookieSessionStore) Delete(key interface{}) error

Delete value in cookie session

func (*CookieSessionStore) Flush

func (st *CookieSessionStore) Flush() error

Flush Clean all values in cookie session

func (*CookieSessionStore) Get

func (st *CookieSessionStore) Get(key interface{}) interface{}

Get value from cookie session

func (*CookieSessionStore) SessionID

func (st *CookieSessionStore) SessionID() string

SessionID Return id of this cookie session

func (*CookieSessionStore) SessionRelease

func (st *CookieSessionStore) SessionRelease(w http.ResponseWriter)

SessionRelease Write cookie session to http response cookie

func (*CookieSessionStore) Set

func (st *CookieSessionStore) Set(key, value interface{}) error

Set value to cookie session. the value are encoded as gob with hash block string.

type FileProvider

type FileProvider struct {
	// contains filtered or unexported fields
}

FileProvider File session provider

func (*FileProvider) SessionAll

func (fp *FileProvider) SessionAll() int

SessionAll Get active file session number. it walks save path to count files.

func (*FileProvider) SessionDestroy

func (fp *FileProvider) SessionDestroy(sid string) error

SessionDestroy Remove all files in this save path

func (*FileProvider) SessionExist

func (fp *FileProvider) SessionExist(sid string) bool

SessionExist Check file session exist. it checkes the file named from sid exist or not.

func (*FileProvider) SessionGC

func (fp *FileProvider) SessionGC()

SessionGC Recycle files in save path

func (*FileProvider) SessionInit

func (fp *FileProvider) SessionInit(maxlifetime int64, savePath string) error

SessionInit Init file session provider. savePath sets the session files path.

func (*FileProvider) SessionRead

func (fp *FileProvider) SessionRead(sid string) (Store, error)

SessionRead Read file session by sid. if file is not exist, create it. the file path is generated from sid string.

func (*FileProvider) SessionRegenerate

func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (Store, error)

SessionRegenerate Generate new sid for file session. it delete old file and create new file named from new sid.

type FileSessionStore

type FileSessionStore struct {
	// contains filtered or unexported fields
}

FileSessionStore File session store

func (*FileSessionStore) Delete

func (fs *FileSessionStore) Delete(key interface{}) error

Delete value in file session by given key

func (*FileSessionStore) Flush

func (fs *FileSessionStore) Flush() error

Flush Clean all values in file session

func (*FileSessionStore) Get

func (fs *FileSessionStore) Get(key interface{}) interface{}

Get value from file session

func (*FileSessionStore) SessionID

func (fs *FileSessionStore) SessionID() string

SessionID Get file session store id

func (*FileSessionStore) SessionRelease

func (fs *FileSessionStore) SessionRelease(w http.ResponseWriter)

SessionRelease Write file session to local file with Gob string

func (*FileSessionStore) Set

func (fs *FileSessionStore) Set(key, value interface{}) error

Set value to file session

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager contains Provider and its configuration.

func NewManager

func NewManager(provideName, config string) (*Manager, error)

NewManager Create new Manager with provider name and json config string. provider name: 1. cookie 2. file 3. memory 4. redis 5. mysql json config: 1. is https default false 2. hashfunc default sha1 3. hashkey default beegosessionkey 4. maxage default is none

func (*Manager) GC

func (manager *Manager) GC()

GC Start session gc process. it can do gc in times after gc lifetime.

func (*Manager) GetActiveSession

func (manager *Manager) GetActiveSession() int

GetActiveSession Get all active sessions count number.

func (*Manager) GetSessionStore

func (manager *Manager) GetSessionStore(sid string) (sessions Store, err error)

GetSessionStore Get SessionStore by its id.

func (*Manager) SessionDestroy

func (manager *Manager) SessionDestroy(w http.ResponseWriter, r *http.Request)

SessionDestroy Destroy session by its id in http request cookie.

func (*Manager) SessionRegenerateID

func (manager *Manager) SessionRegenerateID(w http.ResponseWriter, r *http.Request) (session Store)

SessionRegenerateID Regenerate a session id for this SessionStore who's id is saving in http request.

func (*Manager) SessionStart

func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (session Store, err error)

SessionStart generate or read the session id from http request. if session id exists, return SessionStore with this id.

func (*Manager) SetSecure

func (manager *Manager) SetSecure(secure bool)

SetSecure Set cookie with https.

type MemProvider

type MemProvider struct {
	// contains filtered or unexported fields
}

MemProvider Implement the provider interface

func (*MemProvider) SessionAll

func (pder *MemProvider) SessionAll() int

SessionAll get count number of memory session

func (*MemProvider) SessionDestroy

func (pder *MemProvider) SessionDestroy(sid string) error

SessionDestroy delete session store in memory session by id

func (*MemProvider) SessionExist

func (pder *MemProvider) SessionExist(sid string) bool

SessionExist check session store exist in memory session by sid

func (*MemProvider) SessionGC

func (pder *MemProvider) SessionGC()

SessionGC clean expired session stores in memory session

func (*MemProvider) SessionInit

func (pder *MemProvider) SessionInit(maxlifetime int64, savePath string) error

SessionInit init memory session

func (*MemProvider) SessionRead

func (pder *MemProvider) SessionRead(sid string) (Store, error)

SessionRead get memory session store by sid

func (*MemProvider) SessionRegenerate

func (pder *MemProvider) SessionRegenerate(oldsid, sid string) (Store, error)

SessionRegenerate generate new sid for session store in memory session

func (*MemProvider) SessionUpdate

func (pder *MemProvider) SessionUpdate(sid string) error

SessionUpdate expand time of session store by id in memory session

type MemSessionStore

type MemSessionStore struct {
	// contains filtered or unexported fields
}

MemSessionStore memory session store. it saved sessions in a map in memory.

func (*MemSessionStore) Delete

func (st *MemSessionStore) Delete(key interface{}) error

Delete in memory session by key

func (*MemSessionStore) Flush

func (st *MemSessionStore) Flush() error

Flush clear all values in memory session

func (*MemSessionStore) Get

func (st *MemSessionStore) Get(key interface{}) interface{}

Get value from memory session by key

func (*MemSessionStore) SessionID

func (st *MemSessionStore) SessionID() string

SessionID get this id of memory session store

func (*MemSessionStore) SessionRelease

func (st *MemSessionStore) SessionRelease(w http.ResponseWriter)

SessionRelease Implement method, no used.

func (*MemSessionStore) Set

func (st *MemSessionStore) Set(key, value interface{}) error

Set value to memory session

type Provider

type Provider interface {
	SessionInit(gclifetime int64, config string) error
	SessionRead(sid string) (Store, error)
	SessionExist(sid string) bool
	SessionRegenerate(oldsid, sid string) (Store, error)
	SessionDestroy(sid string) error
	SessionAll() int //get all active session
	SessionGC()
}

Provider contains global session methods and saved SessionStores. it can operate a SessionStore by its id.

type Store

type Store interface {
	Set(key, value interface{}) error     //set session value
	Get(key interface{}) interface{}      //get session value
	Delete(key interface{}) error         //delete session value
	SessionID() string                    //back current sessionID
	SessionRelease(w http.ResponseWriter) // release the resource & save data to provider & return the data
	Flush() error                         //delete all data
}

Store contains all data for one session process with specific id.

Jump to

Keyboard shortcuts

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