繁体   English   中英

如何检查所需的用户角色

[英]How to check required user role

当我有这样的安全设置时

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

如何获取请求的必需角色,例如,如果访问了/secureROLE_USER用户ROLE_ADMIN对于控制器或服务中的/adminROLE_ADMIN

如果您确实需要这样做:

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

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

从security.yml中读取访问控制:

UPDATE!

我发现有一个名为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM