Session
Session middleware for Fiber.
NOTE: This middleware uses our Storage package to support various databases through a single interface. The default configuration for this middleware saves data to memory, see the examples below for other databases.
Table of Contents
Signatures
func New(config ...Config) *Storefunc (s *Store) RegisterType(i interface{})func (s *Store) Get(c *fiber.Ctx) (*Session, error)func (s *Store) Reset() errorfunc (s *Session) Get(key string) interface{}func (s *Session) Set(key string, val interface{})func (s *Session) Delete(key string)func (s *Session) Destroy() errorfunc (s *Session) Regenerate() errorfunc (s *Session) Save() errorfunc (s *Session) Fresh() boolfunc (s *Session) ID() stringfunc (s *Session) Keys() []string
⚠ Storing interface{} values are limited to built-ins Go types
Examples
Import the middleware package that is part of the Fiber web framework
import ("github.com/gofiber/fiber/v2""github.com/gofiber/fiber/v2/middleware/session")
Then create a Fiber app with app := fiber.New().
Default Configuration
// This stores all of your app's sessions// Default middleware configstore := session.New()// This panic will be catch by the middlewareapp.Get("/", func(c *fiber.Ctx) error {// Get session from storagesess, err := store.Get(c)if err != nil {panic(err)}// Get valuename := sess.Get("name")// Set key/valuesess.Set("name", "john")// Get all Keyskeys := sess.Keys()// Delete keysess.Delete("name")// Destroy sessionif err := sess.Destroy(); err != nil {panic(err)}// Save sessionif err := sess.Save(); err != nil {panic(err)}return c.SendString(fmt.Sprintf("Welcome %v", name))})
Custom Storage/Database
You can use any storage from our storage package.
storage := sqlite3.New() // From github.com/gofiber/storage/sqlite3store := session.New(session.Config{Storage: storage,})
To use the the store, see the above example.
Config
// Config defines the config for middleware.type Config struct {// Allowed session duration// Optional. Default value 24 * time.HourExpiration time.Duration// Storage interface to store the session data// Optional. Default value memory.New()Storage fiber.Storage// Name of the session cookie. This cookie will store session key.// Optional. Default value "session_id".CookieName string// Domain of the CSRF cookie.// Optional. Default value "".CookieDomain string// Path of the CSRF cookie.// Optional. Default value "".CookiePath string// Indicates if CSRF cookie is secure.// Optional. Default value false.CookieSecure bool// Indicates if CSRF cookie is HTTP only.// Optional. Default value false.CookieHTTPOnly bool// Indicates if CSRF cookie is HTTP only.// Optional. Default value false.CookieSameSite string// KeyGenerator generates the session key.// Optional. Default value utils.UUIDKeyGenerator func() string}
Default Config
var ConfigDefault = Config{Expiration: 24 * time.Hour,CookieName: "session_id",KeyGenerator: utils.UUID,}