Sesi

Middleware Sesi digunakan untuk framework Fiber untuk manajemen sesi.

Catatan: Middleware ini menggunakan paket Storage kami untuk mendukung berbagai basis data melalui antarmuka yang terpadu. Konfigurasi default dari middleware ini menyimpan data di dalam memori. Untuk contoh-contoh basis data lainnya, silakan lihat contoh-contoh berikut.

Tanda tangan

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

Catatan: Penyimpanan nilai "interface{}" terbatas pada tipe-tipe Go bawaan.

Contoh

Impor paket middleware untuk framework web Fiber.

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

Setelah menginisialisasi aplikasi Fiber, Anda dapat menggunakan fitur-fitur berikut:

// Inisialisasi dengan konfigurasi default
// Ini menyimpan semua sesi aplikasi Anda
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Dapatkan sesi dari penyimpanan
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Dapatkan nilai
    name := sess.Get("name")

    // Atur kunci/nilai
    sess.Set("name", "john")

    // Dapatkan semua kunci
    keys := sess.Keys()

    // Hapus kunci
    sess.Delete("name")

    // Hancurkan sesi
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Tetapkan waktu kedaluwarsa tertentu untuk sesi ini
    sess.SetExpiry(time.Second * 2)

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

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

Konfigurasi

Properti Tipe Deskripsi Default
Expiration time.Duration Durasi sesi yang diizinkan 24 * time.Hour
Storage fiber.Storage Antarmuka penyimpanan untuk menyimpan data sesi memory.New()
KeyLookup string KeyLookup adalah string seperti ":" untuk mengekstrak ID sesi dari permintaan "cookie:session_id"
CookieDomain string Domain dari cookie ""
CookiePath string Path dari cookie ""
CookieSecure bool Apakah cookie aman false
CookieHTTPOnly bool Apakah cookie hanya HTTP false
CookieSameSite string Nilai cookie SameSite "Lax"
CookieSessionOnly bool Menentukan apakah cookie hanya valid untuk sesi browser. Jika diatur ke true, mengabaikan nilai Expiration false
KeyGenerator func() string KeyGenerator menghasilkan kunci sesi utils.UUIDv4
CookieName (depresiasi) string Depresiasi: gunakan KeyLookup. Nama dari sesi ""

Konfigurasi Default

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

Konstanta

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

Penyimpanan/basis data kustom

Anda dapat menggunakan penyimpanan/basis data apa pun dari paket storage kami.

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