Где проверить безопасность в Symfony 3.3

Пишу приложение с Symfony 3.3 без FOSUserBundle. Типичный поток является одним из:

  • Контроллер => Сервис => Репозиторий => Сущность
  • Команда => Сервис => Репозиторий => Сущность

Изначально я помещал все вызовы isGranted и denyAccessUnlessGranted в сервисы, но это становится беспорядочным, когда я использую сервисы из команд. Я взломал команды, аутентифицируя пользователей через get('security.token_storage')->setToken($token), но это выглядит довольно беспорядочно.

Поскольку я не нашел ничего, кроме примеров «привет, мир», я спрашиваю об этом здесь:

Есть ли рекомендации по выполнению проверок безопасности? Должны ли они быть внутри контроллеров и команд или внутри служб?


person user3429660    schedule 28.06.2017    source источник


Ответы (1)


Я бы поставил проверки безопасности в контроллер. Допустим, у вас есть действие контроллера, которое вызывает некую службу для изменения некоторой сущности. Эта модификация может быть сделана только определенным типом пользователя. Нет смысла передавать пользователя из контроллера в сервис, а затем проверять, разрешено ли пользователю выполнять какие-либо действия. Просто обрежьте его в самом начале.

person Matko Đipalo    schedule 28.06.2017