Help us shape the future of Go! Take the 2026 Go Developer Survey

fastsession

package module
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2023 License: MIT Imports: 18 Imported by: 1

README

session

Test status Go Report Card GoDev GitHub release

Session implementation for hertz.

See examples to see how to use it.

Providers

  • memory
  • memcache
  • mysql
  • postgres
  • redis
  • sqlite3

Features

  • Focus on the design of the code architecture and expansion.
  • Provide full session storage.
  • Convenient switching of session storage.
  • Customizable data serialization.

Bugs

If you find a bug, please open new issue.

Contributing

Feel free to contribute... 😉

Documentation

Index

Constants

View Source
const DefaultKey = "github.com/josephGuo/fastsession"

Variables

This section is empty.

Functions

func Base64Decode

func Base64Decode(dst *Dict, src []byte) error

Base64Decode base64 decode

func Base64Encode

func Base64Encode(src Dict) ([]byte, error)

Base64Encode base64 encode

func MSGPDecode

func MSGPDecode(dst *Dict, src []byte) error

MSGPDecode MessagePack decode

func MSGPEncode

func MSGPEncode(src Dict) ([]byte, error)

MSGPEncode MessagePack encode

func NewHertzSession

func NewHertzSession(providerName, cookieName string) app.HandlerFunc

param providerName "memory" "redis" "memcache" "mysql" "postgre" "sqlite3"

Types

type Config

type Config struct {
	// cookie name
	CookieName string

	// cookie domain
	Domain string

	// If you want to delete the cookie when the browser closes, set it to -1.
	//
	//  0 means no expire, (24 years)
	// -1 means when browser closes
	// >0 is the time.Duration which the session cookies should expire.
	Expiration time.Duration

	// gc life time to execute it
	GCLifetime time.Duration

	// set whether to pass this bar cookie only through HTTPS
	Secure bool

	// allows you to declare if your cookie should be restricted to a first-party or same-site context.
	// possible values: lax, strict, none
	CookieSameSite protocol.CookieSameSite

	// sessionID is in url query
	SessionIDInURLQuery bool

	// sessionName in url query
	SessionNameInURLQuery string

	// sessionID is in http header
	SessionIDInHTTPHeader bool

	// sessionName in http header
	SessionNameInHTTPHeader string

	// SessionIDGeneratorFunc should returns a random session id.
	SessionIDGeneratorFunc func() []byte

	// IsSecureFunc should return whether the communication channel is secure
	// in order to set the secure flag to true according to Secure flag.
	IsSecureFunc func(*app.RequestContext) bool

	// EncodeFunc session value serialize func
	EncodeFunc func(src Dict) ([]byte, error)

	// DecodeFunc session value unSerialize func
	DecodeFunc func(dst *Dict, src []byte) error

	// Logger
	Logger Logger
	// contains filtered or unexported fields
}

Config configuration of session manager

func NewDefaultConfig

func NewDefaultConfig() Config

NewDefaultConfig returns a new default configuration

type Dict

type Dict struct {
	KV map[string]interface{}
}

Dict memory store.

func (*Dict) DecodeMsg

func (z *Dict) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*Dict) EncodeMsg

func (z *Dict) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*Dict) MarshalMsg

func (z *Dict) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*Dict) Msgsize

func (z *Dict) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*Dict) UnmarshalMsg

func (z *Dict) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type Logger

type Logger interface {
	Print(v ...interface{})
	Printf(format string, v ...interface{})
}

type Provider

type Provider interface {
	Get(id []byte) ([]byte, error)
	Save(id, data []byte, expiration time.Duration) error
	Destroy(id []byte) error
	Regenerate(id, newID []byte, expiration time.Duration) error
	Count() int
	NeedGC() bool
	GC() error
}

Provider interface implemented by providers

type Session

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

Session manages the users sessions

func DefaultSession

func DefaultSession(ctx *app.RequestContext) *Session

func New

func New(cfg Config) *Session

New returns a configured manager

func (*Session) Destroy

func (s *Session) Destroy(ctx *app.RequestContext) error

Destroy destroys the session of the current user

func (*Session) Get

func (s *Session) Get(ctx *app.RequestContext) (*Store, error)

Get returns the user session if it does not exist, it will be generated

func (*Session) Regenerate

func (s *Session) Regenerate(ctx *app.RequestContext) error

Regenerate generates a new session id to the current user

func (*Session) Save

func (s *Session) Save(ctx *app.RequestContext, store *Store) error

Save saves the user session

Warning: Don't use the store after exec this function, because, you will lose the after data For avoid it, defer this function in your request handler

func (*Session) SetProvider

func (s *Session) SetProvider(provider Provider) error

SetProvider sets the session provider used by the sessions manager

type Store

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

Store represents the user session

func DefaultStore

func DefaultStore(ctx *app.RequestContext) *Store

func NewStore

func NewStore() *Store

NewStore returns a new empty store

func (*Store) Delete

func (s *Store) Delete(key string)

Delete deletes a value from the given key

func (*Store) DeleteBytes

func (s *Store) DeleteBytes(key []byte)

DeleteBytes deletes a value from the given key

func (*Store) Flush

func (s *Store) Flush()

Flush removes all stored values

func (*Store) Get

func (s *Store) Get(key string) interface{}

Get returns a value from the given key

func (*Store) GetAll

func (s *Store) GetAll() Dict

GetAll returns all stored values

func (*Store) GetBytes

func (s *Store) GetBytes(key []byte) interface{}

GetBytes returns a value from the given key

func (*Store) GetExpiration

func (s *Store) GetExpiration() time.Duration

GetExpiration returns the expiration for current session

func (*Store) GetSessionID

func (s *Store) GetSessionID() []byte

GetSessionID returns the session id

func (*Store) HasExpirationChanged

func (s *Store) HasExpirationChanged() bool

HasExpirationChanged checks wether the expiration has been changed

func (*Store) Ptr

func (s *Store) Ptr() *Dict

Ptr returns the internal store pointer

func (*Store) Reset

func (s *Store) Reset()

Reset resets the store

func (*Store) Set

func (s *Store) Set(key string, value interface{})

Set saves a value for the given key

func (*Store) SetBytes

func (s *Store) SetBytes(key []byte, value interface{})

SetBytes saves a value for the given key

func (*Store) SetExpiration

func (s *Store) SetExpiration(expiration time.Duration) error

SetExpiration sets the expiration for current session

func (*Store) SetSessionID

func (s *Store) SetSessionID(id []byte)

SetSessionID sets the session id

Directories

Path Synopsis
internal
sql
providers

Jump to

Keyboard shortcuts

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