Symfony2 FOSUserBundle角色实体

jmo*_*moz 9 user-roles symfony doctrine-orm

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

现在我需要将角色作为单独的entites,因为我们想要构建一个管理员后端,其他人可以授予用户角色.

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

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

$user->addRole(new Role('ROLE_FOO'));
Run Code Online (Sandbox Code Playgroud)

但这打破了命令和可能的现有代码?

或继续使用:

$user->addRole('ROLE_FOO');
Run Code Online (Sandbox Code Playgroud)

并且结合了角色/实体经理代码addRole()(糟糕的设计).

我注意到这是一个灰色区域(带有FOS的角色实体)并且已经在symfony2板上提到并在这里进行了回合,但没有像样的解决方案.

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

jmo*_*moz 12

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