【问题标题】:Symfony 2 FOS UserBundle users doesn't get group's roleSymfony 2 FOS UserBundle 用户没有获得组的角色
【发布时间】:2012-08-16 21:36:21
【问题描述】:

我正在使用 FOS 用户包来管理对我的应用程序的访问。 因为我需要一个组概念,所以我已经按照文档group 中的描述实现了我需要的东西。

创建用户和组一切都很好,但是当我以用户身份登录并尝试获取他的角色时,他只有 USER_ROLE。

这是我的用户

use FOS\UserBundle\Entity\User as BaseUser;
class RegistredUser extends BaseUser
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="myBundle\Entity\RegistredUserGroup")
 */
protected $group;
 [...]
}

这是我的小组课

use FOS\UserBundle\Entity\Group as BaseGroup;
class RegistredUserGroup extends BaseGroup
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

[...]
}

我的用户在 RegistredUser 表中没有设置任何角色,但设置了 groupId。 该组具有 ROLE_ADMIN 角色。

在我的布局中,我尝试像这样检查角色:

    {% if is_granted('ROLE_ADMIN') %}
    <dl class="menuIcon">
                    <dd><img src="{{ asset('bundles/bundle/images/user.png') }}" alt=""></dd>
                    <dd>{{ "menu.gererReferentiel"|trans }}</dd>
                    </dl>
    {% endif %}

但 Symfony 不显示任何内容。

我是否使用了错误的功能来检查 groupe 角色? 还是我做错了什么?

一个解决方案是让 groups_role 通过

{% if app.user != null and  app.user.group.hasRole('ROLE_ADMIN') %}

但是有没有其他方法可以做到这一点?

【问题讨论】:

    标签: php symfony fosuserbundle roles


    【解决方案1】:

    FOSUserBundle 允许您将组关联到您的用户。组是 一种对角色集合进行分组的方法。组的角色将是 授予属于它的所有用户。

    来自Using Groups With FOSUserBundle

    在你的情况下,你不应该检查

    app.user.group.hasRole('ROLE_ADMIN')
    

    如果用户有一个具有角色admin的组,但检查当前用户是否是某个组的成员,例如

    app.user.hasGroup('ADMIN')
    

    【讨论】:

    • 是的,组的角色是给用户的,只检查用户角色而不是组角色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2013-04-08
    • 1970-01-01
    • 2016-10-01
    • 2015-12-05
    相关资源
    最近更新 更多