FOSUserBundle 组角色设置
Posted
技术标签:
【中文标题】FOSUserBundle 组角色设置【英文标题】:FOSUserBundle group role setup 【发布时间】:2013-02-24 21:53:23 【问题描述】:我正在使用 FOSUserBundle 和 Group 选项。 注册工作。组的创建也有效。 如果我创建 2 个组,admin 和 client 并手动将 a:1:i:0;s:10:"ROLE_ADMIN"; 添加到 fos_group 表中的 admin 组,然后在 fos_user_user_group 中 MANULLY 设置和条目用户到 admin 组,使用该用户登录将能够以管理员身份登录。
但是,这种方法显然存在一些缺点。 我现在可以使用什么来将用户添加到组?使用提升命令行选项只会将角色添加到该用户但在 fos_user 表中,并且由于我使用的是组,我怀疑不再使用 fos_user 表的角色列。如果它仍然有用,我如何以编程方式将用户分配到组?
我的另一个大问题是如何为组分配角色。也许我对整个 Groups 的想法没有了解,但我希望能够在创建时为组添加角色,但“新”表单只询问组名,并且没有'似乎不存在与用户升级命令等效的组。
谢谢。
【问题讨论】:
【参考方案1】:如何以编程方式将用户分配到组?
$user->addGroup($group);
由于您使用 FOSUserBundle,您的用户实体扩展了 FOS\UserBundle\Model
,它实现了 GroupableInterface
。所以你的用户类已经有组方法getGroups, hasGroup($name), addGroup(GroupInterface $group), removeGroup(GroupInterface $group)
。参考看这里https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/User.php
如何为组分配角色?
$em = $this->getDoctrine()->getEntityManager();
$group = new Group();
$group->setRoles(array());
$group->addRole('ROLE_ACTOR');
$em->persist($group);
$em->flush();
您必须自己实现角色分配,fosuserbundle 没有为此预定义的表单。
【讨论】:
如果——在我的情况下——我有 Group ->oneToMany->User 的关系,我有一个特定的用例?我不能这样,我该怎么办????以上是关于FOSUserBundle 组角色设置的主要内容,如果未能解决你的问题,请参考以下文章
已使用“FOSUser Bundle”登录的用户的“角色提升”,无需先注销
带有 FosUserBundle 的 Sonata Admin Bundle 列表
Hwi oauth bundle 和 Symfony 3.4 无法自动装配服务:如何在 symfony 3.4 + FOSUserBundle 中使用 hwi/oauth-bundle