Nuevo en Symfony 5.1: Mejoras en el componente HttpFoundation

Añadido InputBag

La clase ParameterBag definida por Symfony es como un array orientado a objetos que almacena valores relacionados y proporciona métodos como get(), set(), has(), etc. Symfony también define clases especializadas que extienden de ParameterBag (ej. FileBag para los archivos subidos, ServerBag para cabeceras HTTP, etc.)

En Symfony 5.1 hemos introducido una nueva clase InputBag (que extiende de ParameterBag) para manejar los valores proporcionados por el usuario (via las variables superglobales $_GET, $_POST, $_REQUEST y $_COOKIE).

Esta funcionalidad fue contribuida por Saif en el pull request #34363.

Sesiones encriptadas

Encriptar la información es una de las recomendaciones básicas para minimizar los daños causados por un robo de datos.En Symfony 5.1 puedes encriptar los datos de las sesiones usando el nuevo MarshallingSessionHandler, que a su vez usa el marshaller del componente Cache.

La siguiente configuración define la información necesaria para empezar a encriptar las sesiones:

Symfony\Component\Cache\Marshaller\SodiumMarshaller:
    decorates: 'session.marshaller'
    arguments:
        - ['%env(file:resolve:SODIUM_DECRYPTION_FILE)%']
        - '@.inner'

Esta funcionalidad fue contribuida por Ahmed Tailouloute en el pull request #35804.

Soporte de todas las directivas Cache-Control de HTTP

Symfony soporta las directivas Cache-Control de HTTP más comunes (etag, last_modified, max_age, public , etc.). En Symfony 5.1 hemos decidido añadir soporte para todas las directivas cache-control:

  • etag
  • immutable
  • last_modified
  • max_age
  • must_revalidate
  • no_cache
  • no_store
  • no_transform
  • private
  • proxy_revalidate
  • public
  • s_maxage

Esta funcionalidad fue contribuida por Saif en el pull request #35748.

Constructor de Cookies

Las cookies definen muchas opciones de configuración. Por eso el constructor Cookie::create() define nueve argumentos. En Symfony 5.1 hemos añadido varios métodos para convertir la clase Cookie en un "objeto constructor" ("builder object" en inglés):

use Symfony\Component\HttpFoundation\Cookie;
 
// Antes
$cookie = Cookie::create(
    'foo', 'bar', new \DateTime('+1 year'), '/', '.myfoodomain.com', true, true
);
 
// Después
$cookie = Cookie::create('foo')
    ->withValue('bar')
    ->withExpires(new \DateTime('+1 year'))
    ->withDomain('.myfoodomain.com')
    ->withSecure(true)
    ->withHttpOnly(true);

Todos los métodos withXXX() devuelven una nueva instancia del objeto Cookie, por lo que también puedes usarlos para cambiar alguna opción de una cookie existente y crear una nueva cookie.

Esta funcionalidad fue contribuida por Nikita Safonov en el pull request #35215.


Fuente: New in Symfony 5.1: HttpFoundation improvements

Comentarios

Publicada el

20 de mayo de 2020

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

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