我有一个管理面板,并为其定义了一个角色ROLE_ADMIN
。在我的 security.yml 文件中,我使用了一种模式^/admin/*
所以 /admin 下的所有内容都需要ROLE_ADMIN
。现在在我的应用程序的前端,我需要检查用户角色以及角色是否是ROLE_ADMIN
渲染一个文件,否则渲染另一文件。此 url 不属于 security.yml 中定义的模式。
那么如何检查用户是管理员还是主页上的普通用户,并且不属于 security.yml 中定义的模式?
使用以下命令在整个应用程序上启用防火墙^/
模式,允许匿名访问和使用access_control
限制访问:
security:
firewalls:
secured_area:
pattern: ^/
anonymous: ~
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
正如 @itsmequinn 建议的那样,使用isGranted()
安全上下文的方法:
if ($this->get('security.context')->isGranted('ROLE_BRAND')) {
// the user has the ROLE_BRAND role, so act accordingly
}
In 交响乐2.6, security.context
已分为两个独立的服务。因此您需要使用security.authorization_checker
解决问题的服务:
if ($this->get('security.authorization_checker')->isGranted('ROLE_BRAND')) {
// the user has the ROLE_BRAND role, so act accordingly
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)