การเซตอัพ Middleware

Middleware เซ็ชันนี้ใช้สำหรับเฟรมเวร์ค Fiber สำหรับการจัดการเซ็ชัน

หมายเหตุ: Middleware นี้ใช้ Storage package ของเราเพื่อสนับสนุนฐานข้อมูลต่าง ๆ ผ่านอินเตอร์เฟซที่ประสบความสำเร็จ การกำหนดค่าเริ่มต้นของ Middleware นี้จัดเก็บข้อมูลในหน่วยความจำ สำหรับตัวอย่างของฐานข้อมูลอื่น ๆ โปรดดูตัวอย่างต่อไปนี้

ลายเซนต์

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 ที่มีอยู่

ตัวอย่าง

นำเข้าแพคเกจ middleware สำหรับ Fiber Web framework

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 สร้างคีย์เซ็ชัน 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 package ของเรา

storage := sqlite3.New() // จาก github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
    Storage: storage,
})