Безопасность Symfony - получить подробную информацию о доступе отказано - PullRequest
0 голосов
/ 24 января 2019

Если у меня есть метод контроллера, защищенный, скажем, is_granted('ROLE_XYZ'), а у пользователя нет этой роли, как мне получить «ROLE_XYZ» в исключении?В настоящее время сообщение об исключении имеет только «Отказано в доступе».

Или, вообще, я хочу знать, какое выражение не удалось.

1 Ответ

0 голосов
/ 24 января 2019

Гм Я не уверен, что правильно понял ваш вопрос.

Но если вы хотите создать специальное исключение «Отказано в доступе» с помощью специального сообщения, взгляните на эту страницу: https://symfony.com/doc/current/security/access_denied_handler.html

Надеюсь, это поможет

РЕДАКТИРОВАТЬ : В случае, если предыдущая ссылка не работает, для создания пользовательского сообщения вам необходимо:

  • Создать класскоторый реализует AccessDeniedHandlerInterface
class AccessDeniedHandler implements AccessDeniedHandlerInterface
    {
        public function handle(Request $request, AccessDeniedException $accessDeniedException)
        {
            // ...

            return new Response($content, 403);
        }
    }
  • Затем измените ваш security.yaml, добавив свой пользовательский класс
    # config/packages/security.yaml
    firewalls:
        # ...

        main:
            # ...
            access_denied_handler: App\Security\AccessDeniedHandler
...