Nuevo en Symfony 4.1: mejoras relacionadas con las sesiones

Eliminadas las llamadas a sesiones que no existen

En Symfony 4.1 se ha declarado obsoleta la llamada a Request::getSession() cuando la sesión no existe (en Symfony 5.0 dará un error). La solución consiste en comprobar siempre si la sesión existe con Request::hasSession():

// ...
if ($request->hasSession() && ($session = $request->getSession())) {
    $session->set('some_key', 'some_value');
}

Esta funcionalidad fue contribuida por Florent Mata en el pull request #26564.

Permitir la caché de peticiones que usan sesiones

Cada vez que se inicia la sesión, Symfony convierte la respuesta asociada a esa petición en privada y no cacheable por temas de seguridad. Sin embargo, a veces es posible cachear las peticiones que utilizan la sesión.

Por ejemplo, la información relativa a un grupo de usuarios se puede cachear para todos los usuarios de ese grupo. Este tipo de caché está fuera del alcance de Symfony porque es demasiado avanzada, pero se puede resolver con bundles como FOSHttpCacheBundle.

Así que en Symfony 4.1 se ha añadido una nueva cabecera HTTP llamada NO_AUTO_CACHE_CONTROL_HEADER que permite desactivar este comportamiento de Symfony que convierte en privadas a todas las peticiones que usan la sesión:

use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;
 
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');

Esta funcionalidad fue contribuida por Yanick Witschi en el pull request #26681.

Migración de sesiones más sencilla

Migrar las sesiones de una aplicación (por ejemplo desde archivos hasta una base de datos) es una operación delicada que muchas veces acaba perdiendo la información de todas las sesiones existentes. Por eso en Symfony 4.1 se ha añadido una clase MigratingSessionHandler para ayudarte a migrar las sesiones sin perder información.

Lee esta sección de la documentación oficial de Symfony donde se explican los pasos recomendados para realizar la migración.

Esta funcionalidad fue contribuida por Ross Motley en el pull request #26096.

Fuente: New in Symfony 4.1: Session improvements

Comentarios

Publicada el

6 de junio de 2018

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.