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