会话控制

未匹配的标注

Session

Fiber 的 Session 中间件。

注意:此中间件使用我们的 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

存储值仅限于 Go 内置类型中的 interface{} 类型

示例

导入作为 Fiber 网络框架一部分的中间件包

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

然后使用 app := fiber.New()创建一个 Fiber 程序。

默认配置

// 存储应用的所有 session
// 默认中间件配置
store := session.New()

// 捕捉这个中间件的异常
app.Get("/", func(c *fiber.Ctx) error {
    // 从 storage 获取 session
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // 取值
    name := sess.Get("name")

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

    // 获取所有 Keys
    keys := sess.Keys()

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

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

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

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

自定义存储/数据库

你可以使用我们 storage 包里的任何存储。

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

要是用仓库, 请参阅上面的示例。

配置

// Config 定义中间件的配置.
type Config struct {
    // 允许 session 的持续时间
    // 可选. 默认值 24 * time.Hour
    Expiration time.Duration

    // 存储 session 数据的 Storage 接口
    // 可选. 默认值 memory.New()
    Storage fiber.Storage

    // 会话 cookie 的名称. 此 cookie 存储会话密钥.
    // 可选. 默认值 "session_id".
    CookieName string

    // cookie 的 域 .
    // 可选. 默认值 "".
    CookieDomain string

    // cookie 路径.
    // 可选. 默认值 "".
    CookiePath string

    // 提示 cookie 是否安全.
    // 可选. 默认值 false.
    CookieSecure bool

    // 提示 cookie 是否仅为 HTTP.
    // 可选. 默认值 false.
    CookieHTTPOnly bool

    // 设置 cookie SameSite 属性.
    // 可选. 默认值 "Lax".
    CookieSameSite string

    // KeyGenerator 生成会话密钥.
    // 可选. 默认值 utils.UUID
    KeyGenerator func() string
}

默认配置

var ConfigDefault = Config{
    Expiration:   24 * time.Hour,
    CookieName:   "session_id",
    KeyGenerator: utils.UUID,
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/ses...

译文地址:https://learnku.com/docs/gofiber/2.x/ses...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~