如何将数据库角色添加到 FOSUserBundle

Posted

技术标签:

【中文标题】如何将数据库角色添加到 FOSUserBundle【英文标题】:Howto add database roles to FOSUserBundle 【发布时间】:2013-11-06 07:12:56 【问题描述】:

我正在尝试将角色添加到可以从数据库进行管理的 FOSUserBundle。我已阅读文档并开始研究它,但无论我尝试什么似乎都不起作用。

主要问题:FosUserBundle\Model\User 和 FosUserBundle\Model\UserInterface 将角色定义为数组。我想将它们转换为 ArrayCollection / RoleInterface。

第一次尝试:使用扩展 FOSUserBundle\Model\User 的 Acme\UserBundle\Entity\User 覆盖。但这不起作用,因为我无法覆盖接口中定义的角色函数。

第二次尝试:替换 FOS 用户和用户界面模型,这允许我创建函数和数据库结构,但给我留下了另一个问题。当我这样做时,在 FOSUserBundle 中引用 FOSUserBundle\Model\UserInterface 的所有内容都将无法工作,这意味着我必须覆盖几乎整个包,这看起来不像是你想要做的事情只是为了添加角色。

所以基本上是一个问题:如何在不覆盖整个捆绑包的情况下将数据库角色添加到 FOSUserBundle?

【问题讨论】:

看看组:github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/… 【参考方案1】:

您可以添加所有内容 只需使用

$user->addRole('ROLE_XXXXX');

但您必须在 security.yml 中定义 ROLE_XXX 注意:当你定义角色时,你必须从 ROLE_YOURROLE 开始

扩展用户后可以定义新功能

public function ListRole()

         foreach($this->getRoles() as $role)

         

【讨论】:

以上是关于如何将数据库角色添加到 FOSUserBundle的主要内容,如果未能解决你的问题,请参考以下文章

FOSUserBundle 组角色设置

带有 FOSUserBundle 的 Symfony2 - 如何向我的应用程序添加没有层次结构的角色

在使用 FOSUserBundle 进行用户注册期间添加默认角色

在 FOSUserBundle 中管理用户/角色/组

如何明确禁用 FOSUserBundle 中的注册

使用 FosUserBundle symfony2 管理多个角色