路由设置中的用户角色

User roles in route settings

要根据用户的角色检查用户是否有权访问控制器,我们通常在控制器的顶部做这样的事情:

$this->denyAccessUnlessGranted('ROLE_ADMIN');

或使用注释:

/**
* @Security("has_role('ROLE_ADMIN')")
*/

并且所有受保护的控制器都有这样的检查。

是否可以将此检查放在路由设置中,例如。 G。这样或以某种方式类似:

protected_route:
  path: /top_secret
  defaults: { _controller: '...', roles: [ROLE_ADMIN] }

?

是的,你应该看看这个页面:

http://symfony.com/doc/current/book/security.html#securing-url-patterns-access-control

# app/config/security.yml
security:
    # ...
    firewalls:
        # ...

    access_control:
        # require ROLE_ADMIN for /admin*
        - { path: ^/admin, roles: ROLE_ADMIN }