跳至主要内容
版本:v2.x

会话

适用于 Fiber 的会话中间件。

注意

此中间件使用我们的 存储 包通过一个单一接口来支持各种数据库。此中间件的默认配置将数据保存到内存中,请参阅以下示例以了解其他数据库。

签名

func New(config ...Config) *Store
func (s *Store) RegisterType(i interface{})
func (s *Store) Get(c *fiber.Ctx) (*Session, error)
func (s *Store) Delete(id string) 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) Reset() 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 Web 框架中包含的中间件包

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

在启动 Fiber 应用后,可以使用以下可能性

// Initialize default config
// This stores all of your app's sessions
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
// Get session from storage
sess, err := store.Get(c)
if err != nil {
panic(err)
}

// Get value
name := sess.Get("name")

// Set key/value
sess.Set("name", "john")

// Get all Keys
keys := sess.Keys()

// Delete key
sess.Delete("name")

// Destroy session
if err := sess.Destroy(); err != nil {
panic(err)
}

// Sets a specific expiration for this session
sess.SetExpiry(time.Second * 2)

// Save session
if err := sess.Save(); err != nil {
panic(err)
}

return c.SendString(fmt.Sprintf("Welcome %v", name))
})

配置

属性类型说明默认值
过期时间time.Duration允许的会话持续时间。24 * time.Hour
存储fiber.Storage存储会话数据的存储接口。memory.New()
KeyLookup字符串KeyLookup 是一个 "<source>:<name>" 形式的字符串,用于从请求中提取会话 ID。"cookie:session_id"
CookieDomain字符串Cookie 的域。""
CookiePath字符串Cookie 的路径。""
CookieSecure布尔值表示 Cookie 是否安全。false
CookieHTTPOnly布尔值表示 Cookie 是否仅限 HTTP。false
CookieSameSite字符串SameSite Cookie 的值。"Lax"
CookieSessionOnly布尔值决定 Cookie 是否仅持续浏览器会话。如果设置为 true,则忽略过期时间。false
KeyGeneratorfunc() stringKeyGenerator 生成会话密钥。utils.UUIDv4
CookieName(已弃用)字符串已弃用:请使用 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() // From github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
Storage: storage,
})

要使用存储,请参阅 示例