session

package module
v2.0.0-...-d48770b Latest Latest
Warning

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

Go to latest
Published: May 16, 2021 License: MIT Imports: 9 Imported by: 0

README

session

Build Status Go Report Card GoDev GitHub release

Session implementation for fasthttp.

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

This section is empty.

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

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 fasthttp.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(*fasthttp.RequestCtx) 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 {
	dictpool.Dict
}

Dict memory store

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 New

func New(cfg Config) *Session

New returns a configured manager

func (*Session) Destroy

func (s *Session) Destroy(ctx *fasthttp.RequestCtx) error

Destroy destroys the session of the current user

func (*Session) Get

func (s *Session) Get(ctx *fasthttp.RequestCtx) (*Store, error)

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

func (*Session) Regenerate

func (s *Session) Regenerate(ctx *fasthttp.RequestCtx) error

Regenerate generates a new session id to the current user

func (*Session) Save

func (s *Session) Save(ctx *fasthttp.RequestCtx, 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 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