php - symfony security annotation
¿Cuál es la diferencia entre ACL y roles de usuario en Symfony2? (1)
Soy nuevo en Symfony2 y estoy confundido con los términos y cuál es su caso de uso. ¿Alguien puede explicar cuál es la diferencia entre?
- ACL
- Roles
- Los grupos
Tomemos el ejemplo más básico: una aplicación de Blog (otra vez).
Al crear una aplicación de blog, a menudo es necesario autenticar a los usuarios y autorizarlos para que realicen acciones específicas, como:
- Autoriza a Bob a agregar un nuevo colaborador al blog.
- autoriza a Alice a crear una nueva entrada de blog
- autoriza a Alice a editar su propia entrada de blog
- autoriza a Bob a borrar la publicación del blog de Alice
Que es un rol
Un rol representa un conjunto de permisos, codificados en su aplicación . Al verificar si un usuario tiene permiso para agregar un nuevo colaborador al blog, su código verifica si el usuario actual tiene el rol "ROLE_ADMIN".
Es por eso que a Bob (él tiene el ROLE_ADMIN) se le permite agregar un Alice como nuevo Contribuyente. Ver la documentación de Symfony sobre Seguridad / Roles .
Que es un grupo
Cuando un usuario pertenece a un grupo, generalmente tiene derecho a un conjunto de roles . Alice pertenece al grupo "Colaboradores", por lo que tiene los roles ROLE_STATS (puede ver las estadísticas del blog) y ROLE_POST (puede publicar una nueva entrada de blog).
Una vez más, este concepto no está codificado de manera rígida en Symfony, pero los desarrolladores generalmente lo piensan de esa manera. Ver algunos bits sobre la gestión de roles en una base de datos con grupos .
ACLs
Las listas de control de acceso son útiles cuando necesita tomar una decisión de autorización basada en un rol + un objeto de dominio .
Alice tiene permiso para editar entradas de blog escritas solo por ella. Para verificar esta autorización, necesita los roles de Alicia y el modelo de publicación que está intentando editar. La documentación de Symfony sobre ACLs también es bastante clara al respecto.
Ah, y Bob tiene permiso para editar todas las entradas del blog porque tiene el ROLE_ADMIN. La decisión aquí solo se basa en un Rol.