如何检查所需的用户角色
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.yml:http://symfony.com/doc/current/components/config/resources.html
- 将 YAML 解析为 php 数组:http://symfony.com/doc/current/components/yaml/introduction.html
更新!
我发现有一个名为 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
当我有这样的安全设置时
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.yml:http://symfony.com/doc/current/components/config/resources.html
- 将 YAML 解析为 php 数组:http://symfony.com/doc/current/components/yaml/introduction.html
更新!
我发现有一个名为 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