Overview
En esta guía, puedes aprender cómo establecer sesiones HTTP usando Laravel MongoDB. Las sesiones permiten a tu aplicación almacenar información sobre un usuario en múltiples solicitudes al servidor. La aplicación almacena esta información en una ubicación especificada que puede consultar en futuras solicitudes que haga el usuario.
Nota
Implementación del controlador de sesión
El v5.4 Laravel MongoDB presenta el dedicado
MongoDbSessionHandler Clase que extiende la clase DatabaseSessionHandler de Laravel para almacenar información de sesión. El controlador de sesión mongodb guarda los ID de usuario, las direcciones IP y los agentes de usuario, si los hay.
En v5.3 y versiones anteriores, el controlador de sesión utiliza la clase MongoDbSessionHandler del marco Symfony.
Para obtener más información sobre el soporte para sesiones, consulte Sesión HTTP en la documentación de Laravel.
Registrar una sesión
Antes de poder registrar una sesión, debe configurar su conexión a MongoDB en el archivo config/database.php de su aplicación. Para saber cómo configurar esta conexión, consulte
Paso Configurar su conexión MongoDB de la guía de inicio rápido.
A continuación, puede seleccionar el controlador de sesión y la conexión de una de las siguientes maneras:
En un archivo
.env, configurando las siguientes variables de entorno:.envSESSION_DRIVER=mongodb # Optional, this is the default value SESSION_CONNECTION=mongodb En el archivo
config/session.php, como se muestra en el siguiente código:config/sesión.phpreturn [ 'driver' => 'mongodb', // Required 'connection' => 'mongodb', // Database connection name, default is "mongodb" 'table' => 'sessions', // Collection name, default is "sessions" 'lifetime' => null, // TTL of session in minutes, default is 120 'options' => [] // Other driver options ];
La siguiente lista describe otras opciones de controlador que puede configurar en la matriz options:
id_field:Nombre de campo personalizado para almacenar el ID de sesión (predeterminado:_id)data_field:Nombre de campo personalizado para almacenar los datos de la sesión (predeterminado:data)time_field: Nombre de campo personalizado para almacenar la marca de tiempo (por defecto:time)expiry_field:Nombre de campo personalizado para almacenar la marca de tiempo de vencimiento (predeterminado:expires_at)ttl:Tiempo de vida en segundos
Le recomendamos crear un índice en el campo expiry_field para la recolección de elementos no utilizados. También puede expirar automáticamente las sesiones en la base de datos creando un índice TTL en la colección que almacena la información de la sesión.
Puede utilizar el generador Schema para crear un índice TTL, como se muestra en el siguiente código:
Schema::create('sessions', function (Blueprint $collection) { $collection->expire('expires_at', 0); });
Establecer el valor de tiempo en 0 en la definición del índice indica a MongoDB que debe eliminar documentos en el momento del reloj especificado en el campo expires_at.
Para obtener más información sobre el uso del Schema generador para crear índices, consulte la sección Crear índices dispersos, TTL y únicos de la guía del generador de esquemas.
Para obtener más información sobre los índices TTL, consulte Hacer caducar datos de colecciones configurando TTL en el manual del servidor.