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

Posted

技术标签:

【中文标题】带有 FOSUserBundle 的 Symfony2 - 如何向我的应用程序添加没有层次结构的角色【英文标题】:Symfony2 with FOSUserBundle - how to add roles without hierarchy to my application 【发布时间】:2013-02-28 14:55:22 【问题描述】:

我正在创建一个需要 2 个角色的 Web 应用程序。医生和病人。它们通过多对多关系连接(患者可以有多个医生,反之亦然),并且医生应该能够查看其患者的数据,但不能对其进行编辑。

我正在使用 FOSUserBundle 并遵循有关使用角色的文档。但是,我看到的文档并不能帮助我创建这些角色。我尝试了 symfony2 文档的安全部分,但它显示了如何创建角色层次结构 - 对我没有帮助。

我该如何解决这个问题?

编辑:更准确地说:真正的问题是如何添加这两个角色。也许我不需要这些组...

【问题讨论】:

【参考方案1】:

我想我解决了:

http://symfony.com/doc/current/book/security.html#roles

这个角色不需要在任何地方定义 - 你可以开始使用它。

编辑:只需执行 $user->addRole("ROLE_MEDIC");

【讨论】:

注意,当没有设置角色时,首先需要初始化角色 $user->setRoles(array()); @artworkadshi 你确定吗?它似乎工作得很好。我已签入 phpMyAdmin 并添加了角色。 $user = $this->userManager->findUserByUsername($name); if($isMedic) $user->addRole("ROLE_MEDIC"); else $user->addRole("ROLE_PATIENT"); $this->userManager->updateUser($user); 偶然发现了这一点,并认为我会为未来的用户分享我的评论。 addRole 会将您分配的角色添加到角色数组中(默认为 ROLE_USER),因此您将拥有该用户的多个角色。

以上是关于带有 FOSUserBundle 的 Symfony2 - 如何向我的应用程序添加没有层次结构的角色的主要内容,如果未能解决你的问题,请参考以下文章

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

FOSUserBundle - 您必须在安全防火墙配置中激活注销

FOSUserBundle 使用 MongoDB 配置验证而不是 ORM

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

Symfony 4 fosuserbundle

FOSUserBundle:密码重置后的成功目标