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,
})