Documentation ¶
Index ¶
- func Register(backend SessionBackend, factory SessionFactory)
- type CookieBackend
- type CookieSession
- func (s *CookieSession) Add(key string, value interface{})
- func (s *CookieSession) Get(key string) interface{}
- func (s *CookieSession) Open(b []byte) []byte
- func (s *CookieSession) Restore() map[string]interface{}
- func (s *CookieSession) Save()
- func (s *CookieSession) Seal(b []byte) []byte
- func (s *CookieSession) Serialize(v interface{}) error
- func (s *CookieSession) Unserialize(v interface{}) error
- type NoopSession
- func (s *NoopSession) Add(key string, value interface{})
- func (s *NoopSession) Get(key string) interface{}
- func (s *NoopSession) NewSession(w http.ResponseWriter, r *http.Request) Session
- func (s *NoopSession) Restore() map[string]interface{}
- func (s *NoopSession) Save()
- func (s *NoopSession) Serialize(v interface{}) error
- func (s *NoopSession) Unserialize(v interface{}) error
- type Session
- type SessionBackend
- type SessionConfig
- type SessionFactory
- type SessionMaster
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Register ¶
func Register(backend SessionBackend, factory SessionFactory)
Types ¶
type CookieBackend ¶
func (*CookieBackend) NewSession ¶
func (s *CookieBackend) NewSession(w http.ResponseWriter, r *http.Request) Session
type CookieSession ¶
type CookieSession struct {
// contains filtered or unexported fields
}
func (*CookieSession) Add ¶
func (s *CookieSession) Add(key string, value interface{})
func (*CookieSession) Get ¶
func (s *CookieSession) Get(key string) interface{}
func (*CookieSession) Open ¶
func (s *CookieSession) Open(b []byte) []byte
func (*CookieSession) Restore ¶
func (s *CookieSession) Restore() map[string]interface{}
func (*CookieSession) Save ¶
func (s *CookieSession) Save()
func (*CookieSession) Seal ¶
func (s *CookieSession) Seal(b []byte) []byte
func (*CookieSession) Serialize ¶
func (s *CookieSession) Serialize(v interface{}) error
func (*CookieSession) Unserialize ¶
func (s *CookieSession) Unserialize(v interface{}) error
type NoopSession ¶
type NoopSession struct{}
func (*NoopSession) Add ¶
func (s *NoopSession) Add(key string, value interface{})
func (*NoopSession) Get ¶
func (s *NoopSession) Get(key string) interface{}
func (*NoopSession) NewSession ¶
func (s *NoopSession) NewSession(w http.ResponseWriter, r *http.Request) Session
func (*NoopSession) Restore ¶
func (s *NoopSession) Restore() map[string]interface{}
func (*NoopSession) Save ¶
func (s *NoopSession) Save()
func (*NoopSession) Serialize ¶
func (s *NoopSession) Serialize(v interface{}) error
func (*NoopSession) Unserialize ¶
func (s *NoopSession) Unserialize(v interface{}) error
type Session ¶
type Session interface { // Add a key to the session. Depending on the backend, this may call // Restore(). This should not be used with the serializer methods, and // implementations should enforce such behavior. Add(key string, value interface{}) // Get a key from the session. If the serializer methods have been used, // implementations should return nill. Get(key string) interface{} // Serialize data to the session. Useful for storing predefined structs, // etc. Backends may use whatever serialization method they prefer, but most // will probably marshal the input to JSON. This method should NOT be used // in conjunection with Add() or Get(). // // Serialize() is provided for more strongly typing session data. Serialize(v interface{}) error // Unserialize data from the session. The same caveats apply here that apply // to Serialize(), and this should not be used in conjunection with sessions // that are using Add() and Get(). Unserialize(v interface{}) error // Restore sessions using Add() and Get(). Restore() isn't called by the // session registry as it is up to implementations to decide precisely how // restoration functionality should interact with the serializers. Restore() map[string]interface{} // Save the session or its metadata to a cookie. For cookie-backed sessions, // this will save the entire session state to a cookie; for others, this // should save a unique identifier that allows the session to be restored // from elsewhere. // // This method will be called in the BeforeResponse handler to ensure that // cookie data is written out to the HTTP headers and is called regardless // of persistence method (Add/Get vs Serialize/Unserialize). Save() }
type SessionBackend ¶
type SessionBackend int
const ( SessionNoopBackend SessionBackend = iota SessionMemoryBackend SessionCookieBackend SessionBoltBackend SessionSQLBackend )
type SessionConfig ¶
type SessionConfig struct { // Backend controls which backend may be configured for session // management. If this value isn't set, it defaults to SessionNoopBackend // treating sessions as a noop. Note that some values may require additional // dependencies. In particular, enabling the cookie backend will require // KeyStar. // // Dependencies are further gated in the compiled binary via build flags. Backend SessionBackend // CookieOptions configures the session cookie to dispatch to the browser. CookieOptions *http.Cookie // DSN for backends that require datasource configuration. // // See the documentation for individual backends for a description of how // this is used. DSN string // Key used to encrypt/decrypt the session cookie. If this is greater than // 32 bytes, the remainder is used as the HMAC key. Note that the HMAC key // can be specified separately. Key []byte // HMACKey used to sign and verify the session cookie. A key length of 64 // bytes is recommended as per[1] // // [1] https://tools.ietf.org/html/rfc4868#section-2.6 HMACKey []byte // PlainText toggles off cookie encryption if true. This flag should only // ever be enabled for debugging or testing. // // This flag cannot be enabled unless development mode is turned on. // // Note: Not all backends support encryption. PlainText bool }
type SessionFactory ¶
type SessionFactory func(*SessionConfig) SessionMaster
type SessionMaster ¶
type SessionMaster interface {
NewSession(w http.ResponseWriter, r *http.Request) Session
}
func Load ¶
func Load() SessionMaster
func New ¶
func New(cfg *SessionConfig) SessionMaster
Click to show internal directories.
Click to hide internal directories.