Documentation ¶
Overview ¶
Package session provider
Usage: import(
"github.com/flycash/beego-web/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 ¶
- Variables
- func DecodeGob(encoded []byte) (map[interface{}]interface{}, error)
- func EncodeGob(obj map[interface{}]interface{}) ([]byte, error)
- func Register(name string, provide Provider)
- type CookieProvider
- func (pder *CookieProvider) SessionAll(context.Context) int
- func (pder *CookieProvider) SessionDestroy(ctx context.Context, sid string) error
- func (pder *CookieProvider) SessionExist(ctx context.Context, sid string) (bool, error)
- func (pder *CookieProvider) SessionGC(context.Context)
- func (pder *CookieProvider) SessionInit(ctx context.Context, maxlifetime int64, config string) error
- func (pder *CookieProvider) SessionRead(ctx context.Context, sid string) (Store, error)
- func (pder *CookieProvider) SessionRegenerate(ctx context.Context, oldsid, sid string) (Store, error)
- func (pder *CookieProvider) SessionUpdate(ctx context.Context, sid string) error
- type CookieSessionStore
- func (st *CookieSessionStore) Delete(ctx context.Context, key interface{}) error
- func (st *CookieSessionStore) Flush(context.Context) error
- func (st *CookieSessionStore) Get(ctx context.Context, key interface{}) interface{}
- func (st *CookieSessionStore) SessionID(context.Context) string
- func (st *CookieSessionStore) SessionRelease(ctx context.Context, w http.ResponseWriter)
- func (st *CookieSessionStore) Set(ctx context.Context, key, value interface{}) error
- type FileProvider
- func (fp *FileProvider) SessionAll(context.Context) int
- func (fp *FileProvider) SessionDestroy(ctx context.Context, sid string) error
- func (fp *FileProvider) SessionExist(ctx context.Context, sid string) (bool, error)
- func (fp *FileProvider) SessionGC(context.Context)
- func (fp *FileProvider) SessionInit(ctx context.Context, maxlifetime int64, savePath string) error
- func (fp *FileProvider) SessionRead(ctx context.Context, sid string) (Store, error)
- func (fp *FileProvider) SessionRegenerate(ctx context.Context, oldsid, sid string) (Store, error)
- type FileSessionStore
- func (fs *FileSessionStore) Delete(ctx context.Context, key interface{}) error
- func (fs *FileSessionStore) Flush(context.Context) error
- func (fs *FileSessionStore) Get(ctx context.Context, key interface{}) interface{}
- func (fs *FileSessionStore) SessionID(context.Context) string
- func (fs *FileSessionStore) SessionRelease(ctx context.Context, w http.ResponseWriter)
- func (fs *FileSessionStore) Set(ctx context.Context, key, value interface{}) error
- type Log
- type Manager
- func (manager *Manager) GC()
- func (manager *Manager) GetActiveSession() int
- func (manager *Manager) GetProvider() Provider
- func (manager *Manager) GetSessionStore(sid string) (sessions Store, err error)
- func (manager *Manager) SessionDestroy(w http.ResponseWriter, r *http.Request)
- func (manager *Manager) SessionRegenerateID(w http.ResponseWriter, r *http.Request) (session Store)
- func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (session Store, err error)
- func (manager *Manager) SetSecure(secure bool)
- type ManagerConfig
- type MemProvider
- func (pder *MemProvider) SessionAll(context.Context) int
- func (pder *MemProvider) SessionDestroy(ctx context.Context, sid string) error
- func (pder *MemProvider) SessionExist(ctx context.Context, sid string) (bool, error)
- func (pder *MemProvider) SessionGC(context.Context)
- func (pder *MemProvider) SessionInit(ctx context.Context, maxlifetime int64, savePath string) error
- func (pder *MemProvider) SessionRead(ctx context.Context, sid string) (Store, error)
- func (pder *MemProvider) SessionRegenerate(ctx context.Context, oldsid, sid string) (Store, error)
- func (pder *MemProvider) SessionUpdate(ctx context.Context, sid string) error
- type MemSessionStore
- func (st *MemSessionStore) Delete(ctx context.Context, key interface{}) error
- func (st *MemSessionStore) Flush(context.Context) error
- func (st *MemSessionStore) Get(ctx context.Context, key interface{}) interface{}
- func (st *MemSessionStore) SessionID(context.Context) string
- func (st *MemSessionStore) SessionRelease(ctx context.Context, w http.ResponseWriter)
- func (st *MemSessionStore) Set(ctx context.Context, key, value interface{}) error
- type Provider
- type Store
Constants ¶
This section is empty.
Variables ¶
var SLogger = NewSessionLog(os.Stderr)
SLogger a helpful variable to log information about session
Functions ¶
Types ¶
type CookieProvider ¶
type CookieProvider struct {
// contains filtered or unexported fields
}
CookieProvider Cookie session provider
func (*CookieProvider) SessionAll ¶
func (pder *CookieProvider) SessionAll(context.Context) int
SessionAll Implement method, return 0.
func (*CookieProvider) SessionDestroy ¶
func (pder *CookieProvider) SessionDestroy(ctx context.Context, sid string) error
SessionDestroy Implement method, no used.
func (*CookieProvider) SessionExist ¶
SessionExist Cookie session is always existed
func (*CookieProvider) SessionGC ¶
func (pder *CookieProvider) SessionGC(context.Context)
SessionGC Implement method, no used.
func (*CookieProvider) SessionInit ¶
func (pder *CookieProvider) SessionInit(ctx context.Context, 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 ¶
SessionRead Get SessionStore in cooke. decode cooke string to map and put into SessionStore with sid.
func (*CookieProvider) SessionRegenerate ¶
func (pder *CookieProvider) SessionRegenerate(ctx context.Context, oldsid, sid string) (Store, error)
SessionRegenerate Implement method, no used.
func (*CookieProvider) SessionUpdate ¶
func (pder *CookieProvider) SessionUpdate(ctx context.Context, 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(ctx context.Context, key interface{}) error
Delete value in cookie session
func (*CookieSessionStore) Flush ¶
func (st *CookieSessionStore) Flush(context.Context) error
Flush Clean all values in cookie session
func (*CookieSessionStore) Get ¶
func (st *CookieSessionStore) Get(ctx context.Context, key interface{}) interface{}
Get value from cookie session
func (*CookieSessionStore) SessionID ¶
func (st *CookieSessionStore) SessionID(context.Context) string
SessionID Return id of this cookie session
func (*CookieSessionStore) SessionRelease ¶
func (st *CookieSessionStore) SessionRelease(ctx context.Context, w http.ResponseWriter)
SessionRelease Write cookie session to http response cookie
type FileProvider ¶
type FileProvider struct {
// contains filtered or unexported fields
}
FileProvider File session provider
func (*FileProvider) SessionAll ¶
func (fp *FileProvider) SessionAll(context.Context) int
SessionAll Get active file session number. it walks save path to count files.
func (*FileProvider) SessionDestroy ¶
func (fp *FileProvider) SessionDestroy(ctx context.Context, sid string) error
SessionDestroy Remove all files in this save path
func (*FileProvider) SessionExist ¶
SessionExist Check file session exist. it checks the file named from sid exist or not.
func (*FileProvider) SessionGC ¶
func (fp *FileProvider) SessionGC(context.Context)
SessionGC Recycle files in save path
func (*FileProvider) SessionInit ¶
SessionInit Init file session provider. savePath sets the session files path.
func (*FileProvider) SessionRead ¶
SessionRead Read file session by sid. if file is not exist, create it. the file path is generated from sid string.
func (*FileProvider) SessionRegenerate ¶
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(ctx context.Context, key interface{}) error
Delete value in file session by given key
func (*FileSessionStore) Flush ¶
func (fs *FileSessionStore) Flush(context.Context) error
Flush Clean all values in file session
func (*FileSessionStore) Get ¶
func (fs *FileSessionStore) Get(ctx context.Context, key interface{}) interface{}
Get value from file session
func (*FileSessionStore) SessionID ¶
func (fs *FileSessionStore) SessionID(context.Context) string
SessionID Get file session store id
func (*FileSessionStore) SessionRelease ¶
func (fs *FileSessionStore) SessionRelease(ctx context.Context, w http.ResponseWriter)
SessionRelease Write file session to local file with Gob string
type Log ¶
Log implement the log.Logger
func NewSessionLog ¶
NewSessionLog set io.Writer to create a Logger for session.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager contains Provider and its configuration.
func NewManager ¶
func NewManager(provideName string, cf *ManagerConfig) (*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 ¶
GetActiveSession Get all active sessions count number.
func (*Manager) GetProvider ¶
GetProvider return current manager's provider
func (*Manager) GetSessionStore ¶
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 ¶
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.
type ManagerConfig ¶
type ManagerConfig struct { CookieName string `json:"cookieName"` EnableSetCookie bool `json:"enableSetCookie,omitempty"` Gclifetime int64 `json:"gclifetime"` Maxlifetime int64 `json:"maxLifetime"` DisableHTTPOnly bool `json:"disableHTTPOnly"` Secure bool `json:"secure"` CookieLifeTime int `json:"cookieLifeTime"` ProviderConfig string `json:"providerConfig"` Domain string `json:"domain"` SessionIDLength int64 `json:"sessionIDLength"` EnableSidInHTTPHeader bool `json:"EnableSidInHTTPHeader"` SessionNameInHTTPHeader string `json:"SessionNameInHTTPHeader"` EnableSidInURLQuery bool `json:"EnableSidInURLQuery"` SessionIDPrefix string `json:"sessionIDPrefix"` }
ManagerConfig define the session config
type MemProvider ¶
type MemProvider struct {
// contains filtered or unexported fields
}
MemProvider Implement the provider interface
func (*MemProvider) SessionAll ¶
func (pder *MemProvider) SessionAll(context.Context) int
SessionAll get count number of memory session
func (*MemProvider) SessionDestroy ¶
func (pder *MemProvider) SessionDestroy(ctx context.Context, sid string) error
SessionDestroy delete session store in memory session by id
func (*MemProvider) SessionExist ¶
SessionExist check session store exist in memory session by sid
func (*MemProvider) SessionGC ¶
func (pder *MemProvider) SessionGC(context.Context)
SessionGC clean expired session stores in memory session
func (*MemProvider) SessionInit ¶
SessionInit init memory session
func (*MemProvider) SessionRead ¶
SessionRead get memory session store by sid
func (*MemProvider) SessionRegenerate ¶
SessionRegenerate generate new sid for session store in memory session
func (*MemProvider) SessionUpdate ¶
func (pder *MemProvider) SessionUpdate(ctx context.Context, 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(ctx context.Context, key interface{}) error
Delete in memory session by key
func (*MemSessionStore) Flush ¶
func (st *MemSessionStore) Flush(context.Context) error
Flush clear all values in memory session
func (*MemSessionStore) Get ¶
func (st *MemSessionStore) Get(ctx context.Context, key interface{}) interface{}
Get value from memory session by key
func (*MemSessionStore) SessionID ¶
func (st *MemSessionStore) SessionID(context.Context) string
SessionID get this id of memory session store
func (*MemSessionStore) SessionRelease ¶
func (st *MemSessionStore) SessionRelease(ctx context.Context, w http.ResponseWriter)
SessionRelease Implement method, no used.
type Provider ¶
type Provider interface { SessionInit(ctx context.Context, gclifetime int64, config string) error SessionRead(ctx context.Context, sid string) (Store, error) SessionExist(ctx context.Context, sid string) (bool, error) SessionRegenerate(ctx context.Context, oldsid, sid string) (Store, error) SessionDestroy(ctx context.Context, sid string) error SessionAll(ctx context.Context) int //get all active session SessionGC(ctx context.Context) }
Provider contains global session methods and saved SessionStores. it can operate a SessionStore by its id.
type Store ¶
type Store interface { Set(ctx context.Context, key, value interface{}) error //set session value Get(ctx context.Context, key interface{}) interface{} //get session value Delete(ctx context.Context, key interface{}) error //delete session value SessionID(ctx context.Context) string //back current sessionID SessionRelease(ctx context.Context, w http.ResponseWriter) // release the resource & save data to provider & return the data Flush(ctx context.Context) error //delete all data }
Store contains all data for one session process with specific id.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package couchbase for session provider
|
Package couchbase for session provider |
Package ledis provide session Provider
|
Package ledis provide session Provider |
Package memcache for session provider
|
Package memcache for session provider |
Package mysql for session provider
|
Package mysql for session provider |
Package postgres for session provider
|
Package postgres for session provider |
Package redis for session provider
|
Package redis for session provider |
Package redis for session provider
|
Package redis for session provider |
Package redis for session provider
|
Package redis for session provider |