Сессия

Промежуточное ПО 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.

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 Ключевое значение, например ":", для извлечения идентификатора сеанса из запроса "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 Генератор ключей сеанса 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() // от github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
    Storage: storage,
})