gpt4 book ai didi

php - Symfony 2 FOS UserBundle 用户没有获得组的角色

转载 作者:搜寻专家 更新时间:2023-10-31 21:40:14 25 4
gpt4 key购买 nike

我正在使用 FOS User Bundle 来管理对我的应用程序的访问。因为我需要一个群体概念,所以我已经按照文档 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;
[...]
}

这是我的小组类(class)

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 不显示任何内容。

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

一个解决方案是通过

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

但是还有其他方法吗?

最佳答案

FOSUserBundle allows you to associate groups to your users. Groups are a way to group a collection of roles. The roles of a group will be granted to all users belonging to it.

来自 Using Groups With FOSUserBundle

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

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

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

app.user.hasGroup('ADMIN')

关于php - Symfony 2 FOS UserBundle 用户没有获得组的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com