路线设置中的用户角色

时间:2015-06-19 14:10:54

标签: security symfony controller routing

要检查用户是否可以访问控制器,具体取决于他的角色,我们通常会在控制器的顶部执行以下操作:

$this->denyAccessUnlessGranted('ROLE_ADMIN');

或使用注释:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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 }