首页 > 解决方案 > 访问拒绝除少数之外的所有控制器。Symfony 3

问题描述

如何拒绝访问除某些控制器之外的所有控制器?我有角色:ROLE_SUPER_ADMIN、ROLE_ADMIN、ROLE_MANAGER。

如果我使用注释,那么一切都很好。index方法对manager可用,方法中的ROLE_MANAGER覆盖ROLE_ADMIN

/**
 * @Security("has_role('ROLE_ADMIN')")
 */
 class TestController extends Controller
{
    /**
     * @Security("has_role('ROLE_MANAGER')")
     */
    public function index(): Response
    {
        return new Response('Test');
    }
 }

如果我拒绝除管理员之外的所有人访问,则控制器中的覆盖不起作用。我在 security.yml 中的 access_control:

access_control:
    - { path: ^/login,      role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/,       role: ROLE_ADMIN }

在access_control中我可以写所有的路由,但是列表太大,不方便。并且在控制器中使用注解更加方便。

我想这样做,以便在创建新控制器时,默认情况下它仅对 ROLE_ADMIN 可用。

标签: symfonyaccess-controlsymfony-3.4symfony-securitysymfony3.x

解决方案


推荐阅读