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
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.