Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Recomendaciones sobre ACL o Voters en aplicaciones Symfony

6 de marzo de 2015

Hola, me gustaría aclarar ciertas dudas que tengo a la hora de gestionar permisos de usuarios en aplicaciones Symfony específicamente Symfony 2.6.

Tengo un escenario de casos de uso como el siguiente:

En mi aplicación tengo por ejemplo determinados roles de usuarios como por ejemplo lo que sería un ROLE_SUPER_ADMIN que tienen permiso para crear usuarios, crear roles, asignarles roles a los usuarios, asignarle permisos a los roles, etc, etc. Y en función de lo que se haya creado por ese tipo de sub-administradores pues dinámicamente leer esa información y chequear los permisos del usuario autenticado en el sistema.

Ejemplo, debe ser posible desde una aplicación backoffice crear cosas como esta:

  • permiso 1: Role_Editor1 puede eliminar, crear, editar solo las entidades del tipo X
  • permiso 2: Role_Editor2 puede editar solo las entidades del la categoria Y
  • permiso 3: Role_Editor2 puede editar solo las entidades del año Z
  • permiso 4: Role_Editor2 puede eliminar,crear solo las entidades del tipo A

y así por el estilo.

He estado mirando las opciones que tengo para ello y hasta donde he podido investigar he visto que están los Voters y las ACL.

Me gustaría por favor opiniones de alguien que haya tenido que desarrollar algo parecido, que me pueda comentar sus experiencias o recomendaciones, para saber por cuál de las dos vías decidirme.

Además me llama la atención que se ha hablado de eliminar la ACL del componente de seguridad y Move the ACL part of the Security Component outside of Symfony. Lo cual me deja mas dudas aún.

Agradecería cualquier consejo. Gracias de antemano.


Respuestas

#1

Nunca he desarrollado una aplicación que necesitara un sistema de permisos tan detallado, así que no puedo darte una opinión técnica. Lo que si puedo es darte tres razones de peso para no usar ACL:

  • Las buenas prácticas oficiales de Symfony recomiendan usar los Voters siempre que se pueda en vez de las ACL.
  • Hay un riesgo claro de que las ACL se eliminen de las próximas versiones de Symfony. En la práctica esto ya ha sucedido, porque apenas se realizan mejoras o mantenimiento en esa parte del framework.
  • Existe muy poca documentación sobre las ACL y la mayoría está incompleta y desfasada. Si usas ACL y tienes problemas, es probable que no encuentres la solución en Google.

@javiereguiluz

6 marzo 2015, 12:48
#2

Muchísimas gracias Javier, seguiré tus recomendaciones.

@fleitas56

6 marzo 2015, 13:00
#3

Buenas noches, me presento, soy Víctor Gracia y soy socio fundador de Offing Web Solutions, somos una empresa que nos dedicamos al desarrollo de aplicaciones web, diseño web responsive, e-commerce. Actualmente estamos desarrollando una aplicación web para un cliente que requiere del uso del permiso de roles y permisos, por lo que buscando por Google veo que muchos desarrolladores se encuentran en la misma situación. Entiendo Javier, que debería de usar Voters en lugar de ACL. Estas recomendaciones nos van a venir muy bien para sacar adelante este pequeño problema.

Gracias

Aprovecho para compartir nuestro blog: www.offing.es

@victorgraciaweb

17 febrero 2016, 0:13
#4

@victorgraciaweb no hay ninguna duda: en las aplicaciones Symfony, entre ACL o voters, siempre hay que usar voters.

@javiereguiluz

17 febrero 2016, 9:02