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