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