Nuevo en Symfony 5.1: Mejoras en el servicio UriSigner
En las aplicaciones Symfony, el servicio relacionado con la clase UriSigner
añade una firma en las URLs para evitar su manipulación. Symfony lo utiliza por
ejemplo para firmar las URLs de los fragmentos que se usan en funcionalidades
como ESI.
En Symfony 5.1, hemos mejorado la clase UriSigner
con un nuevo método llamado
checkRequest()
. Este método permite pasar un objeto de tipo Request
en vez
de tener que construir la URL a mano:
// Antes $url = $request->getSchemeAndHttpHost() .$request->getBaseUrl() .$request->getPathInfo() .(null !== ($qs = $request->server->get('QUERY_STRING')) ? '?'.$qs : ''); if ($this->signer->check($url) { // ... } // Después if ($this->signer->checkRequest($request) { // ... }
Otra mejora introducida en Symfony 5.1 es que el servicio ahora se puede inyectar
automáticamente. Solo tienes que añadir el type-hint Symfony\Component\HttpKernel\UriSigner
a cualquier argumento de tu controlador o servicio:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\UriSigner; class MyController extends AbstractController { public function someMethod(Request $request, UriSigner $uriSigner) { if (!$uriSigner->checkRequest($request)) { // ... } } }
Esta funcionalidad fue contribuida por Yanick Witschi en el pull request #35284 y #35298.
Fuente: New in Symfony 5.1: Improved UriSigner
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.