Symfony2 FOSUserBundle角色实体

时间:2011-12-05 15:58:38

标签: symfony doctrine-orm user-roles

我目前正在尝试找出将doctrine持久角色实体实现为与FOSUserBundle兼容的M2M关系的最佳方式。以前我只使用默认实现的字符串,并使用doctrine数组映射来保持它。

现在我需要扮演独立角色,因为我们想要构建一个管理员后端,其他人可以授予用户角色。

基本上,这是一个痛苦的屁股。 FOS接口是为字符串表示而不是Role实体构建的。改变实现,你打破了许多东西,即FOS命令,以促进用户。并且很难确切地知道哪些接口需要symfony2安全系统继续正常工作。

我可以尽可能地重写角色管理代码并使用Role实体,例如:

$user->addRole(new Role('ROLE_FOO'));

但这会破坏命令和可能存在的代码吗?

或继续使用:

$user->addRole('ROLE_FOO');

addRole()中设置角色/实体经理代码(糟糕的设计)。

我注意到这是一个灰色区域(带有FOS的角色实体),并且在symfony2板上已经提到过这里,但没有合适的解决方案。

任何人都有经验或能想出一个体面的解决方案吗?

1 个答案:

答案 0 :(得分:12)

我决定使用array / ArrayCollection实现的混合。我试图尽可能地遵循现有的接口,以免破坏安全系统。我在http://blog.jmoz.co.uk/symfony2-fosuserbundle-role-entities

记录了我的解决方案