9

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

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

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

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

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

但这会破坏命令和可能的现有代码?

或继续使用:

$user->addRole('ROLE_FOO');

addRole()并在(糟糕的设计)中加入角色/实体管理器代码。

我注意到这是一个灰色区域(具有 FOS 的角色实体)并且已在 symfony2 板上和此处提到过,但没有像样的解决方案。

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

4

1 回答 1

12

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

于 2011-12-13T10:38:02.553 回答