Session
Session中间件用于Fiber框架,会话管理。
注意: 该中间件使用我们的Storage包通过一个统一的接口支持各种数据库。该中间件的默认配置将数据保存在内存中,有关其他数据库的示例,请参见下面的示例。
签名
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类型。
示例
导入Fiber Web框架的中间件包
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是一个形如”: “的字符串,用于从请求中提取会话ID |
"cookie:session_id" |
CookieDomain | string |
cookie的域 | "" |
CookiePath | string |
cookie的路径 | "" |
CookieSecure | bool |
cookie是否安全 | false |
CookieHTTPOnly | bool |
cookie是否仅限HTTP | false |
CookieSameSite | string |
SameSite cookie的值 | "Lax" |
CookieSessionOnly | bool |
决定cookie是否仅在浏览器会话中有效。如果设置为true,则忽略Expiration的值 | false |
KeyGenerator | func() string |
KeyGenerator生成会话密钥 | 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包中的任何存储。
storage := sqlite3.New() // From github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
Storage: storage,
})