Чтобы избежать ошибок 403, когда пользователь пытается получить доступ к запрещенной зоне и не позволяет пользователю войти в эту область, мне нужно запретить пользователям регистрироваться, если у вас нет соответствующих учетных данных.
Позвольте мне объяснить немного лучше, предположим, что я пользователь ROLE_USER
X
, пользователь 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 %}
Связанный :