Sitzung

Das Session-Middleware wird für das Fiber-Framework zur Sitzungsverwaltung verwendet.

Hinweis: Diese Middleware verwendet unser Storage-Paket, um durch eine einheitliche Schnittstelle verschiedene Datenbanken zu unterstützen. Die Standardkonfiguration dieser Middleware speichert Daten im Speicher. Weitere Beispiele für andere Datenbanken finden Sie in den folgenden Beispielen.

Signatur

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

Hinweis: Die Speicherung von "interface{}"-Werten ist auf die integrierten Go-Typen beschränkt.

Beispiel

Importieren Sie das Middleware-Paket für das Fiber-Webframework.

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

Nachdem die Fiber-Anwendung initialisiert wurde, können die folgenden Funktionen verwendet werden:

// Mit Standardkonfiguration initialisieren
// Hiermit werden alle Anwendungssitzungen gespeichert
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Sitzung aus dem Speicher abrufen
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Wert abrufen
    name := sess.Get("name")

    // Schlüssel/Wert setzen
    sess.Set("name", "john")

    // Alle Schlüssel abrufen
    keys := sess.Keys()

    // Schlüssel löschen
    sess.Delete("name")

    // Sitzung zerstören
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Ein spezifisches Ablaufdatum für diese Sitzung festlegen
    sess.SetExpiry(time.Second * 2)

    // Sitzung speichern
    if err := sess.Save(); err != nil {
        panic(err)
    }

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

Konfiguration

Eigenschaft Typ Beschreibung Standard
Ablauf time.Duration Erlaubte Sitzungsdauer 24 * time.Hour
Speicher fiber.Storage Speicherschnittstelle zur Speicherung von Sitzungsdaten memory.New()
KeyLookup string KeyLookup ist ein String wie ":", um die Sitzungs-ID aus der Anfrage zu extrahieren "cookie:session_id"
CookieDomain string Domain des Cookies ""
CookiePath string Pfad des Cookies ""
CookieSecure bool Ob das Cookie sicher ist false
CookieHTTPOnly bool Ob das Cookie nur für HTTP ist false
CookieSameSite string Wert des SameSite-Cookies "Lax"
CookieSessionOnly bool Bestimmt, ob das Cookie nur für Browsersitzungen gültig ist. Wenn auf true gesetzt, ignoriert es den Wert von Ablauf false
KeyGenerator func() string KeyGenerator generiert einen Sitzungsschlüssel utils.UUIDv4
CookieName (veraltet) string Veraltet: Verwenden Sie KeyLookup. Name der Sitzung ""

Standardkonfiguration

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

Konstanten

const (
    QuelleCookie   Source = "cookie"
    QuelleHeader   Source = "header"
    QuelleURLQuery Source = "query"
)

Benutzerdefinierter Speicher/Datenbank

Sie können jeden Speicher aus unserem storage-Paket verwenden.

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