الجلسة
يتم استخدام الوسيطة 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,
})