如何检查 symfony2 中的用户角色,以获取不属于 security.yml 定义的模式的 url?

2024-03-15

我有一个管理面板,并为其定义了一个角色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(使用前将#替换为@)

如何检查 symfony2 中的用户角色,以获取不属于 security.yml 定义的模式的 url? 的相关文章

随机推荐