Session Laravel: cómo configurar y acceder al sistema

6min

Laravel es uno de los frameworks PHP de código abierto más fáciles de usar para desarrollo web.

En este artículo, vas a aprender cómo trabaja con las sesiones y cómo configurarlo correctamente.

Índice

Qué es Session Laravel

Las variables “session” Lavarel se utilizan para guardar datos que se mantengan durante la sesión activa de la visita a una página web y, gracias a ellas, el servidor puede relacionar una request con otra y retener datos a lo largo de ella.

Al contrario que otras variables como las cookies, las “session” desaparecen cuando pasa un tiempo y no hay nuevas solicitudes por el navegador web, aunque esto, podría sernos útil para, por ejemplo, guardar los productos de un carrito de la compra que no han sido gestionados por el usuario y recordárselo en su correo. Si bien PHP puede gestionar este tipo de variables de forma nativa, Laravel dispone de otros métodos de configuración con más posibilidades.

Cómo configurar Session Laravel

En el archivo config/session.php realizaremos la configuración donde se almacenarán las sesiones y el tiempo de cada una, contando con cuatro opciones principales:

File

La ruta donde se almacenarán las variables será: storage/framework/sessions.

Cookies

Almacenaremos las variables de sesión sobre cookies encriptadas.

Database

Implementaremos las sesiones en una base de datos.

Memcached / redis

Con esto podremos utilizar un sistema de caché de memoria que hará el proceso más rápido.

Cómo acceder al sistema de sesión de Laravel

Con Lavarel, disponemos de diversas operativas administrativas, como abrir la sesión al efectuar una solicitud, pudiendo así, emplear las variables de sesión en cualquier momento. Existen dos alternativas:

Helper global session

Con esta forma podemos acceder al API y llegar a la sesión desde cualquier parte del código fuente y es una manera sencilla de tener acceso a los datos de la sesión, modificarlos, etc.

Podríamos acceder a una sesión que hemos llamado «idCarroCompra» de esta forma:

$identificador_carrito = session('idCarroCompra');

Instancia de Request

Laravel dispone del objeto $request, y que podemos acceder también al API de las sesiones. Con la request, obtenemos una variable de sesión «idCarroCompra» de esta manera:

public function index(Request $request) {
$identificador_carrito = $request->session()->get('idCarroCompra');
//  Aquí tu código...
}

Cómo guardar y recuperar una variable Laravel Session

Cómo guardar una variable de sesión Laravel

Deberemos indicarle en un array asociativo las variables de sesión que queremos guardar. El array dispone pares clave/valor, siendo “clave” el nombre de la variable y “valor” el valor de ésta.

session(['idCarroCompra' => '15320']);

Cómo recuperar una variable de sesión Laravel

Podremos recuperar de forma fácil el dato almacenado en la sesión, indicando el nombre de la variable a la que queremos acceder.

$valor_almacenado = session('idCarroCompra');

Métodos de utilidad del objeto Session Laravel

Con el objeto “session” dispondremos de acceso a varios métodos de utilidad. Podemos ejecutarlo con el helper global como mostramos a continuación.

session()

En muchas ocasiones este objeto se utiliza sin tener que guardarlo en ninguna variable y unido solo al método que queramos ejecutar.

Cómo eliminar una variable de sesión Laravel

Utilizaremos el método forget(), de este modo:

session()->forget('orderId');

Cómo verificar que una variable de sesión Laravel existe

Usaremos para ello el método has().

session()->has('paymentIntentId');

Cómo regenerar el identificador de sesión Laravel

El identificador permite identificar una sesión de un usuario en la página y aunque este se mantiene a lo largo de toda su visita, cuando un usuario accede a la zona de logueo, el identificador se vuelve a regenerar. Si en algún momento necesitamos regenerarlo de forma manual, utilizaremos el método regenerate().

session()->regenerate();

Cómo eliminar los datos de sesión Laravel al hacer logout

Se supone que al desconectarnos (logout), los datos de nuestra sesión deberían de eliminarse, pero Laravel no cuenta con este comportamiento de manera predeterminada, por lo que podríamos utilizar un manejador de evento para «Logout». Lo declaramos en el fichero app/Providers/EventServiceProvider.php mediante el array $listeners.

protected $listen = [
'Illuminate\Auth\Events\Logout' => [
'App\Listeners\DeleteSessionData',
],
];

En el código, le decimos que cuando ejecutemos el evento «Logout», se invoque el manejador DeleteSessionData. Con el comando “artisan”, podríamos generar el manejador y que deberemos de ejecutarlos una vez editado el archivo EventServiceProvider.php.

php artisan event:generate

La clase DeleteSessionData, una vez realizados los pasos indicados, tendría un código como este:

<?php
namespace App\Listeners;
use Illuminate\Auth\Events\Logout;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Lib\StripeHelper;
class DeleteSessionData
{
public function __construct()
{
//
}
public function handle(Logout $event)
{
session()->forget('variable_de_sesion_que_quieres_asegurarte_de_borrar');
}
}

Conclusiones sobre Session Laravel

En resumen, las sesiones en Laravel te permiten mantener el estado de tu aplicación para cada usuario y esperamos que, después de leer este artículo, hayas aprendido cómo configurarlas para mejorar la experiencia de usuario de tu aplicación web.

Por otro lado, conocer su relación con dominios y hosting web es importante para el funcionamiento de cualquier sitio. Al crear una tienda online o página web, necesitas que la información de tus usuarios se almacene y gestione correctamente para ofrecer una experiencia más fluida y personalizada.

Además, pueden tener un impacto significativo en el contexto de la seguridad web, pues los certificados SSL trabajan en conjunto con las sesiones para proteger los datos confidenciales de los usuarios. Asimismo, los servidores y las bases de datos también juegan su papel para el almacenamiento y la gestión de la información de las sesiones, asegurando que los datos estén disponibles y protegidos en todo momento contra accesos no autorizados.

Manuel León

Productos relacionados: