الجلسة

يتم استخدام الوسيطة Session middleware لإدارة الجلسات في إطار 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 (تمت إهماله) 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,
})