php 如何检查用户在symfony 2中是否只有一个角色?

l2osamch  于 5个月前  发布在  PHP
关注(0)|答案(3)|浏览(48)

假设在我的系统中有四个用户角色-

1. ROLE_SUPER_ADMIN
2. ROLE_ADMIN
3. ROLE_EDITOR
4. ROLE_AUTHOR

字符串
现在想想,一个用户有角色ROLE_PROCEDOR。他可以访问一个特定的文档,但没有其他用户可以访问它。所以我想只允许用户谁拥有ROLE_AUTHOR。我得到了一些解决方案时,搜索,其中有像is_granted('ROLE_AUTHOR'),但这返回一个层次结构的结果。因为在我的配置文件中,我设置层次结构。所以我怎么能给予权限只有ROLE_AUTHOR用户。

nkhmeac6

nkhmeac61#

您可以检查用户是否具有该角色。

  • 在树枝:*
{% if 'ROLE_AUTHOR' in app.user.roles %}
...
{% endif %}

字符串

  • 控制器中:*
if (in_array('ROLE_AUTHOR', $this->getUser()->getRoles(), true)) {
    //...
}

ffvjumwh

ffvjumwh2#

你可能把用户角色存储在你的用户实体中,所以你应该只需要调用你的角色字段的getter(即:getRoles())并检查它。

r7s23pms

r7s23pms3#

请注意,这里接受的答案没有考虑角色层次结构。它只检查分配的特定角色,而不是可能由配置继承的角色。
下面是最好的代码(用于控制器)。

if($this->isGranted('ROLE_ADMIN'))
{
    // your code
}

字符串
来源:https://symfony.com/doc/current/security.html#roles

相关问题