Как создать и зарегистрировать новые роли в Symfony2

Я вижу от чиновника Symfony2 doc по безопасности что новые роли могут быть определены помимо "классических" (т. е. ROLE_USER, ROLE_ADMIN и т. д.).

Как я могу определить новые роли и зарегистрируйте их в моем приложении Symfony2, чтобы создать иерархию ролей в безопасность.в формате YML?

Извините, что побеспокоил всех вас! Я думаю, что ответ прост. В самом деле, кажется, что достаточно начать использовать новый роль, начиная имя с файла role_. Например, можно сказать ROLE_NEWS_AUTHOR чтобы только люди с этой ролью могли вставлять новости на веб-сайт.

спасибо.

1 ответов


конечно, вы можете просто добавить любые роли, начиная с ROLE_SOMEROLE.В безопасности.файл yml есть две основные части к 1.ограничение доступа 2. Кто такие пользователи могут получить доступ к

a. access_control: который ограничивает шаблон и указывает роль, к которой можно получить доступ. b. role_hierarchy: здесь иерархическая структура роли, для примера ниже пользователь администратора (ROLE_ADMIN) имеют роли ROLE_USER,ROLE_NEWS_AUTHOR. Так он может открыть все страницы пользователей и NEWS_AUTHOR.Независимо от иерархии может дать.

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]

в вашем контроллере вы можете проверить роли,

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
}

надеюсь, это поможет вам . Удачи в кодировании.