Официальная документация на страницах 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_.
Кто-нибудь пытался добиться чего-то подобного?
IIRC, ROLE является обязательным префиксом в роли избирателя Symfony, и я не думаю, что этого можно избежать (он жестко задан), но вы можете создать своих собственных избирателей и добавить нужную логику, вы можете прочитать больше здесь:
https://symfony.com/doc/current/security/voters.html
Также отличный учебник для избирателей:
https://stovepipe.systems/post/symfony-security-roles-vs-voters
Других решений пока нет …