Sessione

Il middleware Session viene utilizzato per la gestione delle sessioni nel framework Fiber.

Nota: Questo middleware utilizza il nostro pacchetto Storage per supportare varie basi di dati attraverso un'interfaccia unificata. La configurazione predefinita di questo middleware memorizza i dati in memoria. Per esempi su altre basi di dati, si prega di consultare gli esempi seguenti.

Firma

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

Nota: Lo storage dei valori "interface {}" è limitato ai tipi Go incorporati.

Esempio

Importa il pacchetto del middleware per il framework Web Fiber.

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

Dopo l'inizializzazione dell'applicazione Fiber, è possibile utilizzare le seguenti funzionalità:

// Inizializza con configurazione predefinita
// Questo memorizza tutte le sessioni dell'applicazione
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Ottieni la sessione dallo storage
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Ottieni valore
    name := sess.Get("name")

    // Imposta chiave/valore
    sess.Set("name", "john")

    // Ottieni tutte le chiavi
    keys := sess.Keys()

    // Elimina chiave
    sess.Delete("name")

    // Distruggi la sessione
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Imposta un tempo di scadenza specifico per questa sessione
    sess.SetExpiry(time.Second * 2)

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

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

Configurazione

Proprietà Tipo Descrizione Predefinito
Scadenza time.Duration Durata della sessione consentita 24 * time.Hour
Storage fiber.Storage Interfaccia di memorizzazione per memorizzare i dati di sessione memory.New()
KeyLookup string KeyLookup è una stringa come ":" per estrarre l'ID della sessione dalla richiesta "cookie:session_id"
DominioCookie string Dominio del cookie ""
PercorsoCookie string Percorso del cookie ""
CookieSecure bool Se il cookie è sicuro false
CookieHTTPOnly bool Se il cookie è solo HTTP false
CookieSameSite string Valore di SameSite cookie "Lax"
CookieSessionOnly bool Determina se il cookie è valido solo per le sessioni del browser. Se impostato su true, ignora il valore della scadenza false
KeyGenerator func() string KeyGenerator genera la chiave di sessione utils.UUIDv4
CookieName (deprecato) string Deprecato: utilizzare KeyLookup. Nome della sessione ""

Configurazione predefinita

var ConfigDefault = Config{
    Scadenza:   24 * time.Hour,
    KeyLookup:    "cookie:session_id",
    KeyGenerator: utils.UUIDv4,
    sorgente:       "cookie",
    nomeSessione:  "session_id",
}

Costanti

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

Archiviazione/database personalizzato

È possibile utilizzare qualsiasi archiviazione dal nostro pacchetto storage.

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