如何将数据库角色添加到 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 的 Symfony2 - 如何向我的应用程序添加没有层次结构的角色