Безопасность имеет роль против is_granted

Может кто-нибудь объяснить мне разницу между: @Security("has_role("ROLE_ADMIN")") и @Security("is_granted("ROLE_ADMIN")") и какой из них более рекомендуется?

has_role устарела в Symfony 4 и удалена в Symfony 5. Так что используйте is_granted. Они идентичны, когда дело доходит до проверки роли пользователя. Однако is_granted имеет возможность проверять определенные разрешения для определенных объектов. В документах S5 все еще есть пара ссылок на has_role. Рано или поздно их уберут.

Cerad 23.12.2020 16:12
Стоит ли изучать 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 нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
8
1
2 045
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В этом случае они выполняют ту же работу, но функция has_role() в выражениях безопасности устарела, начиная с Symfony 4.2, поэтому вместо нее мы должны использовать is_granted().

Официальная информация: symfony.com/blog/symfony-4-2-curated-new-features#security

Maxim Mandrik 16.02.2021 15:39

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

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

SteveExdia 12.08.2022 20:03

Он служит в очень специфических сценариях, но по большей части иметь только один гораздо проще.

Yassine Younes 26.01.2023 15:37

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