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,
})