2012-04-23 7 views
7

Veo en el documento oficial Symfony2 doc on Security que se pueden definir nuevos roles además de los "clásicos" (es decir, ROLE_USER, ROLE_ADMIN, etc.).Cómo crear y registrar nuevos roles en Symfony2

¿Cómo puedo definir nuevos roles y registrarlos a mi aplicación Symfony2 con el fin de crear funciones de jerarquía en la security.yml?

¡Perdón por haberlos molestado a todos! Creo que la respuesta es simple. De hecho, parece que es suficiente para comenzar a utilizar un nuevo rol comenzando el nombre con ROLE_. P. ej., Es posible decir ROLE_NEWS_AUTHOR para permitir que solo las personas con ese rol puedan insertar noticias en el sitio web.

Gracias.

Respuesta

13

Claro que se puede simplemente agregar funciones que comienzan con archivo ROLE_SOMEROLE.In security.yml hay dos parte principal de la 1.limit de acceso 2. ¿Cuáles son los memebers pueden acceder

a. access_control: que limita el patrón y especifica un rol al que puede acceder. b. role_hierarchy: aquí la estructura jerárquica de la función, para el ejemplo siguiente, un usuario de administración (ROLE_ADMIN) tiene roles ROLE_USER, ROLE_NEWS_AUTHOR. Para que pueda acceder a todas las páginas de un USUARIO y de NEWS_AUTHOR. Cualquiera que sea la jerarquía que pueda dar.

access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }/login any one can access this pattern 
     - { path: ^/admin/, roles: ROLE_ADMIN }//block all pattern /admin/anything* 
     - { path: ^/news/, roles: ROLE_NEWS_AUTHOR } //block all pattern /news/anything* 
role_hierarchy: 
     ROLE_ADMIN: [ROLE_USER,ROLE_NEWS_AUTHOR] 

En su controlador puede comprobar los papeles,

if(TRUE ===$this->get('security.context')->isGranted('ROLE_ADMIN')) 
{ 
    // do something related to ADMIN 
} 
else if(TRUE ===$this->get('security.context')->isGranted('ROLE_NEWS_AUTHOR')) 
{ 
    // do something related to News Editor 
} 

la esperanza que esto le ayuda. Codificación HAppy.

+0

Gracias por la información adicional. – JeanValjean

+0

También tenga en cuenta que los nombres de los roles siempre deben comenzar con "ROLE_" o Symfony no los reconocerá. – DarksteelPenguin

Cuestiones relacionadas