如何检查所需的用户角色

How to check required user role

当我有这样的安全设置时

security:
    firewalls:
        main:
            # ...
    access_control:
        - { path: ^/secure, roles: ROLE_USER }
        - { path: ^/admin, roles: ROLE_ADMIN }

如何获取请求所需的角色,例如ROLE_USER 用户如果 /secure 在控制器或服务中被访问或 ROLE_ADMIN 对于 /admin

如果您确实需要这样做:

在控制器中获取当前路线:

$request = $this->container->get('request');
$route = $request->get('_route');

从security.yml读取访问控制:

更新!

我发现有一个名为 security.access_map 的服务,您可以使用它。

读这个:

/更新

获取路由所需的角色,如果角色被授予,则检查您的控制器:

if ($this->get('security.context')->isGranted('ROLE_ADMIN')) {
    //Do Something
}

做点别的事

只需将其放入您认为合适的控制器即可:

if ($this->get('security.context')->isGranted('ROLE_SMTH')) {
    //Do Something
}

and/or 在未授予角色时为重定向编写拒绝访问侦听器以避免 403 消息。 教程:http://www.insanevisions.com/articles/view/symfony-2-access-denied-listener