Защита действий контроллера и маршрутов в Symfony

Официальная документация на страницах Symfony предлагает использовать атрибут ROLE_ADMIN (пример) в вызове ACL

    $this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'Unable to access this page!');

мой вопрос, если можно использовать вызов ACL без префикса ROLE_.

Проблема в том, что у нас есть несколько систем без ROLES, но с разрешениями «USER.CREATE» или «USER_CREATE», которые защищают маршрут POST / user / create и действие Create () в UserController.

Лучшее решение было бы иметь избирателя, который будет называть ACL как

$objectName = 'USER';
$action = 'CREATE';
$this->denyAccessUnlessGranted($objectName. '_'. $action, null, 'Unable to access this page!');

Но это не работает, потому что все зависит от префикса ROLE_.
Кто-нибудь пытался добиться чего-то подобного?

0

Решение

IIRC, ROLE является обязательным префиксом в роли избирателя Symfony, и я не думаю, что этого можно избежать (он жестко задан), но вы можете создать своих собственных избирателей и добавить нужную логику, вы можете прочитать больше здесь:

https://symfony.com/doc/current/security/voters.html

Также отличный учебник для избирателей:

https://stovepipe.systems/post/symfony-security-roles-vs-voters

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]