Documentation ¶
Overview ¶
Package session implements a efficient, safely and easy-to-use session library for Go.
Example:
package main import ( "context" "fmt" "net/http" session "github.com/go-session/session/v3" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { store, err := session.Start(context.Background(), w, r) if err != nil { fmt.Fprint(w, err) return } store.Set("foo", "bar") err = store.Save() if err != nil { fmt.Fprint(w, err) return } http.Redirect(w, r, "/foo", 302) }) http.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) { store, err := session.Start(context.Background(), w, r) if err != nil { fmt.Fprint(w, err) return } foo, ok := store.Get("foo") if ok { fmt.Fprintf(w, "foo:%s", foo) return } fmt.Fprint(w, "does not exist") }) http.ListenAndServe(":8080", nil) }
Open in your web browser at http://localhost:8080
Output:
foo:bar
Learn more at https://github.com/go-session/session
Index ¶
- Constants
- Variables
- func Destroy(ctx context.Context, w http.ResponseWriter, r *http.Request) error
- func FromReqContext(ctx context.Context) (*http.Request, bool)
- func FromResContext(ctx context.Context) (http.ResponseWriter, bool)
- func InitManager(opt ...Option)
- type IDHandlerFunc
- type Manager
- type ManagerStore
- type Option
- func SetCookieLifeTime(cookieLifeTime int) Option
- func SetCookieName(cookieName string) Option
- func SetDomain(domain string) Option
- func SetEnableSIDInHTTPHeader(enableSIDInHTTPHeader bool) Option
- func SetEnableSIDInURLQuery(enableSIDInURLQuery bool) Option
- func SetEnableSetCookie(enableSetCookie bool) Option
- func SetExpired(expired int64) Option
- func SetSameSite(sameSite http.SameSite) Option
- func SetSecure(secure bool) Option
- func SetSessionID(handler IDHandlerFunc) Option
- func SetSessionNameInHTTPHeader(sessionNameInHTTPHeader string) Option
- func SetSign(sign []byte) Option
- func SetStore(store ManagerStore) Option
- type Store
Constants ¶
const Version = "3.1.4"
Version # of session
Variables ¶
var ( // ErrInvalidSessionID invalid session id ErrInvalidSessionID = errors.New("invalid session id") )
Functions ¶
func FromReqContext ¶
FromReqContext returns the Request value stored in ctx, if any.
func FromResContext ¶
func FromResContext(ctx context.Context) (http.ResponseWriter, bool)
FromResContext returns the ResponseWriter value stored in ctx, if any.
func InitManager ¶
func InitManager(opt ...Option)
InitManager initialize the global session management instance
Types ¶
type IDHandlerFunc ¶
IDHandlerFunc Define the handler to get the session id
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager A session management instance, including start and destroy operations
func NewManager ¶
NewManager Create a session management instance
type ManagerStore ¶
type ManagerStore interface { // Check the session store exists Check(ctx context.Context, sid string) (bool, error) // Create a session store and specify the expiration time (in seconds) Create(ctx context.Context, sid string, expired int64) (Store, error) // Update a session store and specify the expiration time (in seconds) Update(ctx context.Context, sid string, expired int64) (Store, error) // Delete a session store Delete(ctx context.Context, sid string) error // Use sid to replace old sid and return session store Refresh(ctx context.Context, oldsid, sid string, expired int64) (Store, error) // Close storage, release resources Close() error }
ManagerStore Management of session storage, including creation, update, and delete operations
func NewMemoryStore ¶
func NewMemoryStore() ManagerStore
NewMemoryStore create an instance of a memory store
type Option ¶
type Option func(*options)
Option A session parameter options
func SetCookieLifeTime ¶
SetCookieLifeTime Set the cookie expiration time (in seconds)
func SetEnableSIDInHTTPHeader ¶
SetEnableSIDInHTTPHeader Allow session id to be obtained from the request header
func SetEnableSIDInURLQuery ¶
SetEnableSIDInURLQuery Allow session id from URL query parameters (enabled by default)
func SetEnableSetCookie ¶
SetEnableSetCookie Enable writing session id to cookie (enabled by default, can be turned off if no cookie is written)
func SetExpired ¶
SetExpired Set session expiration time (in seconds)
func SetSameSite ¶
SetSameSite Set SameSite attribute of the cookie
func SetSessionID ¶
func SetSessionID(handler IDHandlerFunc) Option
SetSessionID Set callback function to generate session id
func SetSessionNameInHTTPHeader ¶
SetSessionNameInHTTPHeader The key name in the request header where the session ID is stored (if it is empty, the default is the cookie name)
type Store ¶
type Store interface { // Get a session storage context Context() context.Context // Get the current session id SessionID() string // Get the current User id UserID() string // Set session value, call save function to take effect Set(key string, value interface{}) //Set UserID value SetUID(key string) // Get session value Get(key string) (interface{}, bool) // Delete session value, call save function to take effect Delete(key string) interface{} // Save session data Save() error // Clear all session data Flush() error }
Store A session id storage operation