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