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,
})