Session

Le middleware Session est utilisé pour le framework Fiber afin de gérer les sessions.

Remarque : Ce middleware utilise notre package Storage pour prendre en charge diverses bases de données via une interface unifiée. La configuration par défaut de ce middleware stocke les données en mémoire. Pour des exemples d'autres bases de données, veuillez consulter les exemples suivants.

Signature

func New(config ...Config) *Store
func (s *Store) RegisterType(i interface{})
func (s *Store) Get(c *fiber.Ctx) (*Session, error)
func (s *Store) Reset() error

func (s *Session) Get(key string) interface{}
func (s *Session) Set(key string, val interface{})
func (s *Session) Delete(key string)
func (s *Session) Destroy() error
func (s *Session) Regenerate() error
func (s *Session) Save() error
func (s *Session) Fresh() bool
func (s *Session) ID() string
func (s *Session) Keys() []string

Remarque : Le stockage des valeurs "interface{}" est limité aux types intégrés de Go.

Exemple

Importez le package middleware pour le framework Web Fiber.

import (
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/session"
)

Après avoir initialisé l'application Fiber, vous pouvez utiliser les fonctionnalités suivantes :

// Initialisation avec la configuration par défaut
// Cela stocke toutes vos sessions d'application
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Obtenir la session du stockage
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Obtenir la valeur
    name := sess.Get("name")

    // Définir la clé/valeur
    sess.Set("name", "john")

    // Obtenir toutes les clés
    keys := sess.Keys()

    // Supprimer la clé
    sess.Delete("name")

    // Détruire la session
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Définir un temps d'expiration spécifique pour cette session
    sess.SetExpiry(time.Second * 2)

    // Sauvegarder la session
    if err := sess.Save(); err != nil {
        panic(err)
    }

    return c.SendString(fmt.Sprintf("Bienvenue %v", name))
})

Configuration

Propriété Type Description Par défaut
Expiration time.Duration Durée de la session autorisée 24 * time.Hour
Storage fiber.Storage Interface de stockage pour stocker les données de session memory.New()
KeyLookup string KeyLookup est une chaîne comme ":" pour extraire l'ID de session de la requête "cookie:session_id"
CookieDomain string Domaine du cookie ""
CookiePath string Chemin du cookie ""
CookieSecure bool Si le cookie est sécurisé false
CookieHTTPOnly bool Si le cookie est uniquement HTTP false
CookieSameSite string Valeur du cookie SameSite "Lax"
CookieSessionOnly bool Détermine si le cookie est valide uniquement pour les sessions de navigation. S'il est défini sur true, il ignore la valeur de l'expiration false
KeyGenerator func() string KeyGenerator génère la clé de session utils.UUIDv4
CookieName (déprécié) string Obsolète : utilisez KeyLookup. Nom de la session ""

Configuration par défaut

var ConfigDefault = Config{
    Expiration:   24 * time.Hour,
    KeyLookup:    "cookie:session_id",
    KeyGenerator: utils.UUIDv4,
    source:       "cookie",
    sessionName:  "session_id",
}

Constantes

const (
    SourceCookie   Source = "cookie"
    SourceHeader   Source = "header"
    SourceURLQuery Source = "query"
)

Stockage/personnalisation de base de données

Vous pouvez utiliser n'importe quel stockage de notre package storage.

storage := sqlite3.New() // Depuis github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
    Storage: storage,
})