Запрет входа пользователей из не авторизованной области

Чтобы избежать ошибок 403, когда пользователь пытается получить доступ к запрещенной области и избежать входа пользователя в эту область, мне нужно запретить пользователям входить в систему, если у них нет надлежащих учетных данных.

Позвольте мне объяснить немного лучше, предположим, что я X пользователь ROLE_USERпользователь X может получить доступ к веб-интерфейсу, но не должен иметь возможность войти в бэкэнд, так же как у нас есть пользователь Y а также ROLE_ADMINпользователь Y может войти в бэкэнд, но не в интерфейс, понимаете ли вы меня? Как я могу это сделать?

1

Решение

давайте предположим, что я пользователь Адам с ролью ‘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.');
1

Другие решения

Предполагая, что ваши маршруты правильно защищены, Вы должны скрывать / показывать ссылки на ограниченные области в ваших шаблонах веток.

От Symfony2 док :

{% if is_granted('ROLE_ADMIN') %}
<a href="...">LogIntoBackend</a>
{% endif %}

Связанные с :

0

По вопросам рекламы [email protected]