Система безопасности в Symfony - это набор инструментов и функций, которые позволяют защитить ваше приложение от несанкционированного доступа, а также контролировать доступ пользователей к различным ресурсам и действиям. Symfony предоставляет механизмы аутентификации, авторизации, управления пользователями, а также возможность настройки различных стратегий безопасности.
Для того чтобы настроить Symfony так, чтобы возвращать JSON вместо HTML при неавторизованном пользователе или при проверке разрешения через атрибут IsGranted, можно использовать событие kernel.exception и возвращать JSON-ответ в случае исключения AccessDeniedException. Это позволит легко изменить поведение Symfony при несанкционированном доступе без изменения контроллеров.
Для сделать проверки декларативными, не меняя контроллеры, можно использовать аннотации атрибута IsGranted в Symfony. Например, вы можете добавить аннотацию @IsGranted('ROLE_ADMIN') к методу контроллера, чтобы проверить доступ по роли пользователя. Это позволит определить разрешения прямо в коде контроллера, не изменяя его логику.
Нет необходимости вносить изменения в файл security.yaml для достижения указанных целей, но при необходимости можно настроить файл security.yaml для определения стратегии безопасности, настройки аутентификации, авторизации и других аспектов безопасности приложения.