Sessão

O middleware de Sessão é usado para o framework Fiber para gerenciamento de sessão.

Nota: Este middleware utiliza nosso pacote Storage para suportar vários bancos de dados por meio de uma interface unificada. A configuração padrão deste middleware armazena os dados na memória. Para exemplos de outros bancos de dados, consulte os seguintes exemplos.

Assinatura

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

Nota: O armazenamento de valores "interface{}" é limitado aos tipos incorporados do Go.

Exemplo

Importe o pacote do middleware para o framework web Fiber.

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

Após inicializar a aplicação Fiber, você pode usar as seguintes funcionalidades:

// Inicialize com a configuração padrão
// Isso armazena todas as sessões da sua aplicação
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Obtenha a sessão do armazenamento
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Obtenha o valor
    nome := sess.Get("nome")

    // Defina a chave/valor
    sess.Set("nome", "joão")

    // Obtenha todas as chaves
    chaves := sess.Keys()

    // Exclua a chave
    sess.Delete("nome")

    // Destrua a sessão
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Defina um tempo de expiração específico para esta sessão
    sess.SetExpiry(time.Second * 2)

    // Salve a sessão
    if err := sess.Save(); err != nil {
        panic(err)
    }

    return c.SendString(fmt.Sprintf("Bem-vindo %v", nome))
})

Configuração

Propriedade Tipo Descrição Padrão
Expiração time.Duration Duração permitida da sessão 24 * time.Hour
Armazenamento fiber.Storage Interface de armazenamento para armazenar dados da sessão memory.New()
KeyLookup string KeyLookup é uma string como ":" para extrair o ID da sessão da requisição "cookie:session_id"
Domínio do Cookie string Domínio do cookie ""
Caminho do Cookie string Caminho do cookie ""
CookieSeguro bool Se o cookie é seguro false
ApenasHTTP bool Se o cookie é apenas HTTP false
MesmoSite string Valor do mesmo site cookie "Lax"
ApenasSessao bool Determina se o cookie é válido apenas para sessões do navegador. Se definido como true, ignora o valor da Expiração false
GeradorDeChave func() string GeradorDeChave gera chave de sessão utils.UUIDv4
NomeDoCookie (obsoleto) string Obsoleto: use KeyLookup. Nome da sessão ""

Configuração Padrão

var ConfigDefault = Config{
    Expiração:   24 * time.Hour,
    KeyLookup:    "cookie:session_id",
    GeradorDeChave: utils.UUIDv4,
    fonte:       "cookie",
    nomeSessao:  "session_id",
}

Constantes

const (
    FonteCookie   Fonte = "cookie"
    FonteCabeçalho   Fonte = "header"
    FonteConsultaURL Fonte = "query"
)

Armazenamento/banco de dados personalizado

Você pode usar qualquer armazenamento de nosso pacote storage.

armazenamento := sqlite3.New() // Do github.com/gofiber/storage/sqlite3
store := session.New(session.Config{
    Armazenamento: armazenamento,
})