جلسه

میان‌افزار جلسه برای چارچوب کاری Fiber برای مدیریت جلسه استفاده می‌شود.

توجه: این میان‌افزار از پکیج ذخیره‌سازی ما برای پشتیبانی از انواع مختلف پایگاه‌داده از طریق یک رابط یکپارچه استفاده می‌کند. تنظیمات پیش‌فرض این میان‌افزار داده‌ها را در حافظه ذخیره می‌کند. برای مثال‌های دیگری از پایگاه‌های داده، لطفاً به مثال‌های زیر مراجعه کنید.

امضا

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

توجه: ذخیره‌سازی ارزش‌های "interface{}" به نوع‌های مختصر Go محدود است.

مثال

وارد کردن پکیج میان‌افزار برای چارچوب وب Fiber.

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

پس از مقدمه‌سازی برنامه Fiber، می‌توانید از ویژگی‌های زیر استفاده کنید:

// مقدمه‌سازی با تنظیمات پیش‌فرض
// این برنامه تمام جلسه‌های برنامه شما را ذخیره می‌کند
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // دریافت جلسه از ذخیره
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // دریافت مقدار
    name := sess.Get("name")

    // تنظیم کلید/مقدار
    sess.Set("name", "john")

    // دریافت تمام کلیدها
    keys := sess.Keys()

    // حذف کلید
    sess.Delete("name")

    // نابود کردن جلسه
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // تنظیم زمان انقضای خاص برای این جلسه
    sess.SetExpiry(time.Second * 2)

    // ذخیره جلسه
    if err := sess.Save(); err != nil {
        panic(err)
    }

    return c.SendString(fmt.Sprintf("خوش آمدید %v", name))
})

تنظیمات

خصوصیت نوع توضیحات پیش‌فرض
Expiration time.Duration مدت زمان مجاز جلسه 24 * time.Hour
Storage fiber.Storage رابط ذخیره‌سازی برای ذخیره داده‌های جلسه memory.New()
KeyLookup string KeyLookup یک رشته مانند ":" برای استخراج شناسه جلسه از درخواست است "cookie:session_id"
CookieDomain string دامنه کوکی ""
CookiePath string مسیر کوکی ""
CookieSecure bool آیا کوکی امن است false
CookieHTTPOnly bool آیا کوکی تنها برای HTTP است false
CookieSameSite string مقدار SameSite کوکی "Lax"
CookieSessionOnly bool تعیین می‌کند که کوکی فقط برای نشست‌های مرورگر معتبر است. اگر تنظیم شود true، ارزش Expiration را نادیده می‌گیرد false
KeyGenerator func() string KeyGenerator کلید جلسه تولید می‌کند utils.UUIDv4
CookieName (deprecated) string منسوخ شده: از KeyLookup استفاده شود. نام جلسه ""

پیکربندی پیش‌فرض

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

ثابت‌ها

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

ذخیره/پایگاه‌داده سفارشی

شما می‌توانید از هر ذخیره‌سازی از پکیج ذخیره‌سازی ما استفاده کنید.

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