Sesión

El middleware de Sesión se utiliza para el framework Fiber para la gestión de sesiones.

Nota: Este middleware utiliza nuestro paquete Storage para admitir varias bases de datos a través de una interfaz unificada. La configuración predeterminada de este middleware almacena datos en la memoria. Para ejemplos de otras bases de datos, consulte los siguientes ejemplos.

Firma

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: El almacenamiento de valores "interface {}" está limitado a los tipos integrados de Go.

Ejemplo

Importe el paquete middleware para el framework web Fiber.

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

Después de inicializar la aplicación Fiber, se pueden utilizar las siguientes funcionalidades:

// Inicializar con la configuración predeterminada
// Esto almacena todas las sesiones de su aplicación
store := session.New()

app.Get("/", func(c *fiber.Ctx) error {
    // Obtener la sesión del almacenamiento
    sess, err := store.Get(c)
    if err != nil {
        panic(err)
    }

    // Obtener valor
    nombre := sess.Get("nombre")

    // Establecer clave/valor
    sess.Set("nombre", "john")

    // Obtener todas las claves
    claves := sess.Keys()

    // Eliminar clave
    sess.Delete("nombre")

    // Destruir la sesión
    if err := sess.Destroy(); err != nil {
        panic(err)
    }

    // Establecer un tiempo de expiración específico para esta sesión
    sess.SetExpiry(time.Second * 2)

    // Guardar la sesión
    if err := sess.Save(); err != nil {
        panic(err)
    }

    return c.SendString(fmt.Sprintf("Bienvenido %v", nombre))
})

Configuración

Propiedad Tipo Descripción Predeterminado
Expiración time.Duration Duración de sesión permitida 24 * time.Hour
Almacenamiento fiber.Storage Interfaz de almacenamiento para almacenar datos de sesión memory.New()
KeyLookup string KeyLookup es una cadena como ":" para extraer el ID de sesión de la solicitud "cookie:session_id"
Dominio de la Cookie string Dominio de la cookie ""
Ruta de la Cookie string Ruta de la cookie ""
Segura de la Cookie bool Si la cookie es segura false
HTTPOnly de la Cookie bool Si la cookie es solo HTTP false
SameSite de la Cookie string Valor de SameSite de la cookie "Lax"
SoloSesión de la Cookie bool Determina si la cookie es válida solo para sesiones de navegador. Si se establece en verdadero, ignora el valor de Expiración false
Generador de Clave func() string KeyGenerator genera la clave de sesión utils.UUIDv4
Nombre de la Cookie (obsoleto) string Obsoleto: use KeyLookup. Nombre de la sesión ""

Configuración Predeterminada

var ConfigDefault = Config{
    Expiración:   24 * time.Hour,
    KeyLookup:    "cookie:session_id",
    Generador de Clave: utils.UUIDv4,
    fuente:       "cookie",
    nombreSesión: "session_id",
}

Constantes

const (
    SourceCookie   Source = "cookie"
    SourceHeader   Source = "header"
    SourceURLQuery Source = "query"
)

Almacenamiento/base de datos personalizado

Puede utilizar cualquier almacenamiento de nuestro paquete storage.

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