Sesja

Middleware Sesji jest używane w frameworku Fiber do zarządzania sesjami.

Uwaga: To oprogramowanie pośrednie wykorzystuje nasz pakiet Pamięci do obsługi różnych baz danych za pomocą znormalizowanego interfejsu. Domyślna konfiguracja tego oprogramowania pośredniego przechowuje dane w pamięci. Aby zobaczyć przykłady innych baz danych, prosimy zobaczyć poniższe przykłady.

Sygnatura

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

Uwaga: Przechowywanie wartości „interfejs{}” jest ograniczone do wbudowanych typów Go.

Przykład

Zaimportuj pakiet middleware dla frameworka internetowego Fiber.

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

Po zainicjowaniu aplikacji Fiber, możesz korzystać z następujących funkcji:

// Inicjalizacja z domyślną konfiguracją
// To przechowuje wszystkie sesje Twojej aplikacji
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Pobierz sesję z pamięci
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Pobierz wartość
    name := sess.Get("name")

    // Ustaw klucz/wartość
    sess.Set("name", "john")

    // Pobierz wszystkie klucze
    keys := sess.Keys()

    // Usuń klucz
    sess.Delete("name")

    // Zniszcz sesję
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Ustaw określony czas wygaśnięcia tej sesji
    sess.SetExpiry(time.Second * 2)

    // Zapisz sesję
    if err := sess.Save(); err != nil {
        panic(err)
    }

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

Konfiguracja

Właściwość Typ Opis Domyślna
Wygaśnięcie time.Duration Dozwolony czas trwania sesji 24 * time.Hour
Pamięć fiber.Storage Interfejs przechowywania danych sesji memory.New()
KeyLookup string KeyLookup to łańcuch znaków jak ":" do wyciągania identyfikatora sesji z żądania "cookie:session_id"
CookieDomain string Domena ciasteczka ""
CookiePath string Ścieżka ciasteczka ""
CookieSecure bool Czy ciasteczko jest bezpieczne false
CookieHTTPOnly bool Czy ciasteczko jest dostępne tylko przez HTTP false
CookieSameSite string Wartość ciasteczka SameSite "Lax"
CookieSessionOnly bool Określa, czy ciasteczko jest ważne tylko dla sesji przeglądarki. Jeśli ustawione na true, ignoruje wartość wygaśnięcia false
KeyGenerator func() string Generuje klucz sesji utils.UUIDv4
CookieName (przestarzałe) string Przestarzałe: użyj KeyLookup. Nazwa sesji ""

Domyślna konfiguracja

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

Stałe

const (
    SourceCookie   Źródło = "cookie"
    SourceHeader   Źródło = "header"
    SourceURLQuery Źródło = "query"
)

Niestandardowe przechowywanie/baza danych

Możesz używać dowolnej pamięci z naszego pakietu storage.

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