Чтобы избежать ошибок 403, когда пользователь пытается получить доступ к запрещенной области и избежать входа пользователя в эту область, мне нужно запретить пользователям входить в систему, если у них нет надлежащих учетных данных.
Позвольте мне объяснить немного лучше, предположим, что я X
пользователь ROLE_USER
пользователь X
может получить доступ к веб-интерфейсу, но не должен иметь возможность войти в бэкэнд, так же как у нас есть пользователь Y
а также ROLE_ADMIN
пользователь Y
может войти в бэкэнд, но не в интерфейс, понимаете ли вы меня? Как я могу это сделать?
давайте предположим, что я пользователь Адам с ролью ‘ROLE_ADMIN’. Я не могу войти в веб-интерфейс.
Вы должны просто добавить этот код в ваши контроллеры:
if( $this->get('security.context')->isGranted('YOUR ROLE') )
return new Response('yea!');
Итак, если вы хотите защитить BackendController и позволить входить в систему пользователям с помощью ‘ROLE_ADMIN’, вы должны добавить этот код:
if( $this->get('security.context')->isGranted('ROLE_ADMIN') )
return new Response('You are granted to see this site.');
Этот код проверяет, есть ли у текущего пользователя (меня) роль ROLE_ADMIN. Если вы хотите проверить, есть ли у пользователя ‘ROLE_ADMIN’ А ТАКЖЕ не имеет ‘ROLE_USER’ просто добавьте:
$security = $this->get('security.context');
if( $security->isGranted('ROLE_ADMIN') && !$security->isGranted('ROLE_USER') )
return new Response('You are not granted to see this site.');
Предполагая, что ваши маршруты правильно защищены, Вы должны скрывать / показывать ссылки на ограниченные области в ваших шаблонах веток.
От Symfony2 док :
{% if is_granted('ROLE_ADMIN') %}
<a href="...">LogIntoBackend</a>
{% endif %}
Связанные с :