Phiên

Phiên trung gian được sử dụng cho framework Fiber để quản lý phiên.

Lưu ý: Middleware này sử dụng gói Lưu trữ của chúng tôi để hỗ trợ các cơ sở dữ liệu khác nhau thông qua một giao diện thống nhất. Cấu hình mặc định của middleware này lưu trữ dữ liệu trong bộ nhớ. Để xem các ví dụ về các cơ sở dữ liệu khác, vui lòng xem các ví dụ sau.

Chữ ký

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

Lưu ý: Việc lưu trữ các giá trị "interface{}" được giới hạn đối với các loại Go tích hợp.

Ví dụ

Nhập gói middleware cho framework web Fiber.

import (
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/session"
)

Sau khi khởi tạo ứng dụng Fiber, bạn có thể sử dụng các tính năng sau:

// Khởi tạo với cấu hình mặc định
// Điều này lưu trữ tất cả các phiên của ứng dụng của bạn
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Lấy phiên từ lưu trữ
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Lấy giá trị
    name := sess.Get("name")

    // Thiết lập khóa/giá trị
    sess.Set("name", "john")

    // Lấy tất cả các khóa
    keys := sess.Keys()

    // Xóa khóa
    sess.Delete("name")

    // Hủy phiên
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Thiết lập thời gian hết hạn cụ thể cho phiên này
    sess.SetExpiry(time.Second * 2)

    // Lưu phiên
    if err := sess.Save(); err != nil {
        panic(err)
    }

    return c.SendString(fmt.Sprintf("Chào mừng %v", name))
})

Cấu hình

Thuộc tính Kiểu Mô tả Mặc định
Hết hạn time.Duration Thời gian phiên được phép 24 * time.Hour
Lưu trữ fiber.Storage Giao diện lưu trữ để lưu dữ liệu phiên memory.New()
KeyLookup string KeyLookup là một chuỗi như ":" để trích xuất ID phiên từ yêu cầu "cookie:session_id"
Tên miền Cookie string Tên miền của cookie ""
Đường dẫn Cookie string Đường dẫn của cookie ""
Cookie an toàn bool Cookie có an toàn không false
CookieHTTPOnly bool Cookie chỉ HTTP false
CookieSameSite string Giá trị của cùng một trình duyệt cookie "Lax"
Mã phiên Hãy bool Xác định xem cookie có hợp lệ chỉ cho phiên duyệt. Nếu được đặt thành true, nó bỏ qua giá trị của Expiration false
KeyGenerator func() string KeyGenerator tạo mã phiên utils.UUIDv4
CookieName (không còn hợp lệ) string Không còn hợp lệ: sử dụng KeyLookup. Tên của phiên ""

Cấu hình Mặc định

var ConfigDefault = Config{
    Expiration:   24 * time.Hour,
    KeyLookup:    "cookie:session_id",
    KeyGenerator: utils.UUIDv4,
    source:       "cookie",
    sessionName:  "session_id",
}

Hằng số

const (
    SourceCookie   Source = "cookie"
    SourceHeader   Source = "header"
    SourceURLQuery Source = "query"
)

Lưu trữ/cơ sở dữ liệu tùy chỉnh

Bạn có thể sử dụng bất kỳ lưu trữ nào từ gói lưu trữ của chúng tôi.

storage := sqlite3.New() // Từ github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
    Storage: storage,
})