جلسه
میانافزار جلسه برای چارچوب کاری 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,
})