Symfony - 限制具有特定角色的用户对路由的访问


Symfony - Restrict access to a route for users with a particular role

在security.yml中,我通过定义用户必须具有的最低角色来为用户保护路由。 例如

  • { 路径: ^/a/clients, role: MY_CUSTOM_ROLE }

有没有办法否定这种访问权限,唯一允许通过的人是那些没有这个角色的人?

我认为你可以用symfony表达式语言轻松做到这一点(我认为2.4中的新功能)。一些例子:

access_control:
    - { path: ^/_internal/secure, allow_if: "'127.0.0.1' == request.getClientIp() or has_role('ROLE_ADMIN')" }

有关更多详细信息,请访问:https://github.com/symfony/symfony/pull/8913

对于 2.3.4 版本(当前稳定的版本),您需要手动创建另一个自定义角色,该角色是MY_CUSTOM_ROLE的否定。