如何检查所需的用户角色

时间:2015-01-12 19:48:44

标签: php security symfony

当我有这样的安全设置时

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

如何获取请求所需的角色,例如访问ROLE_USER的{​​{1}}用户或控制器或服务中的/secure ROLE_ADMIN

1 个答案:

答案 0 :(得分:2)

如果你确实需要这样做:

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

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

从security.yml:

中读取访问控制

<强>更新<!/强>

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

阅读本文:https://stackoverflow.com/a/20194159/982075

<强> / UPDATE

获取路径所需的角色,并在授予角色时检查您的控制器:

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

做其他事情

只需将其放入您的控制器中即可:

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

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