session

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 10 Imported by: 0

README

Simple sessions for go http server

  • memory storage (no persistent storage)
  • filesystem storage
    • GOBEncoder for save as binarry gob files
    • JSONEncoder for save as JSON files

Documentation

Overview

Package session (session manager) control process session lifetime create, update and destroy

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ProviderNames

func ProviderNames() []string

ProviderNames return slice of strings - registered Provider names

func Register

func Register(name string, provide DataProvider)

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 DataProvider

type DataProvider interface {
	//SetParams set additional params for provider ex: sql db connection, filesystem path .. etc.
	SetParams(params any) error
	//SetGCProvider activate GC for sessions
	SetGCProvider(gcprv GCProvider)
	//Init create new empty session
	Init(sid string) (Session, error)
	//Load existing session or if not exists
	//create new session using sid value
	Load(sid string) (Session, error)
	//Destroy remove session with sid from storage if exist
	Destroy(sid string) error
	//ChangeID id change old sid to newsid and preserve existing session data
	ChangeID(oldsid, newsid string) (err error)
	//Exists return true if session with sid exist
	Exists(sid string) bool
}

DataProvider interace implement lifecycle for one session

type GCProvider

type GCProvider interface {
	//Init start lifetime for sid
	Init(sid string)
	//Continue lifetime (+lifetime)
	Continue(sid string)
	//End zero lifetime (end)
	End(sid string)
	//ChangeID change id of existing session
	ChangeID(oldid, newid string)
}

GCProvider control lifetime of sessions

type Manager

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

Manager controls all sessions with registered storage provider

func NewManager

func NewManager(providerName string, sopts *SessOpts, adopts any) (manager *Manager, err error)

NewManager create new *Manager using SesOpts and aditional any other opts for using in provider

func (*Manager) Exists

func (manager *Manager) Exists(sid string) bool

Exists return true if session with sid exists on server

func (*Manager) RegenerateID

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

RegenerateID vhange sid and preserve all session data

func (*Manager) SessionDestroy

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

SessionDestroy end session and delete session data at the server

func (*Manager) SessionStart

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

SessionStart start session for next http response

type SessOpts

type SessOpts struct {
	SidLen      uint8
	CookieName  string
	MaxLifetime time.Duration
	Ssl         bool
}

SessOpts set session options or NewManagerh

type Session

type Session interface {
	//set session value and update last access time
	Set(key, value any) error
	//get session value and update last access time
	Get(key any) (v any, err error)
	//delete session value
	Delete(key any) error
	//Data get all session data
	Data() (data map[any]any, err error)
	//get session id
	SessionID() string
}

Session interface implement storage for one session and have maxLifetime and lastAccessTime

Directories

Path Synopsis
package lf is for GCProvider impl.
package lf is for GCProvider impl.
storage
files
Package files implements sessions saved into filesystem persistently encoded using gob or json
Package files implements sessions saved into filesystem persistently encoded using gob or json
memory
Package memory implements sessions saved into memory is gone when stop the server
Package memory implements sessions saved into memory is gone when stop the server

Jump to

Keyboard shortcuts

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