Добавьте что-нибудь в метод Security в symfony 4

На самом деле у меня есть такой код

В контроллере Symfony

/**
 * @Route("/form/partners/{id}/{formState}", name = "bodyshopPartnerEdit")
 * @Security("has_role('ROLE_ADMIN') || has_role('ROLE_BODYSHOP_HANDLER_PARTNER_EDIT')")
 */
public function editPartner(Request $request, EntityManagerInterface $em)

В шаблоне Twig

{% if is_granted('ROLE_ADMIN') or is_granted('ROLE_BODYSHOP_HANDLER_PARTNER_EDIT') %}

Я хотел бы знать, могу ли я изменить методы has_role () и is_granted (), чтобы автоматически принимать ROLE_ADMIN вместо того, чтобы каждый раз проверять две роли

Спасибо !

проверьте это: symfony.com/doc/current/best_practices/security.htmlsymfony.com/doc/master/bundles/SensioFrameworkExtraBundle/… ищите наследование или избиратели нестандартной безопасности

Yamen Nassif 24.04.2018 17:22

Только для Twig вы определяете свою собственную функцию, которая делает то же самое, но поскольку вам нужно, чтобы это было сделано и в @Security, я бы выбрал решение @ Themer

Jovan Perovic 24.04.2018 18:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
75
1

Ответы 1

вы можете использовать иерархические роли и протестировать роль "ROLE_BODYSHOP_HANDLER_PARTNER_EDIT"

security:
# ...

    role_hierarchy:
        ROLE_ADMIN: [ROLE_BODYSHOP_HANDLER_PARTNER_EDI]

В вашем контроллере:

 /**
  * @Route("/form/partners/{id}/{formState}",name = "bodyshopPartnerEdit")
  * @Security("has_role('ROLE_BODYSHOP_HANDLER_PARTNER_EDIT')")
  */
 public function editPartner(Request $request, EntityManagerInterface $em){
     ...........
    }

Другие вопросы по теме