การเซตอัพ 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,
})