Nuevo en Symfony 5.1: Acceso de seguridad basado en la prioridad

En las aplicaciones Symfony, los security voters centralizan la lógica relacionada con la autorización para decidir si un usuario puede acceder al recurso solicitado. Como son servicios de Symfony que utilizan la etiqueta security.voter, pueden definir su prioridad usando el atributo priority de la etiqueta.

No obstante, en la práctica esta prioridad es irrelevante, ya que Symfony usa las siguientes estrategias para decidir si permite el acceso::

  • affirmative, da acceso si al menos un voter da acceso.
  • consensus, da acceso si hay más voters que dan acceso que los que lo niegan.
  • unanimous, da acceso si no hay ningún voter que niegue el acceso.

Por ese motivo en Symfony 5.1 hemos añadido una nueva estrategia de acceso llamada priority que da acceso (o lo niega) dependiendo de lo que haga el primer voter que no se abstenga. En este caso la prioridad de los voters es esencial ya que la decision final es la misma que la del primer voter que no se abstiene:

# config/packages/security.yaml
security:
    access_decision_manager:
        strategy: priority
        # ...

Esta funcionalidad tiene su origen en el CMS Contao, que está desarrollado con Symfony y que define algunos permisos por defecto que sus extensiones/bundles deben ser capaces de reemplazar. Esta nueva estrategia priority es la única capaz de hacerlo.

Esta funcionalidad fue contribuida por Andreas Schempp en el pull request #34548.


Fuente: New in Symfony 5.1: Access decision based on voter priority

Comentarios

Publicada el

14 de mayo de 2020

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.