我目前正在尝试找出将原则持久角色实体实现为与 FOSUserBundle 兼容的 M2M 关系的最佳方法。以前我只使用带有默认实现的字符串,并使用教义数组映射来持久化它。
现在我需要将角色作为单独的实体,因为我们想要构建一个管理员后端,其他人可以在其中授予用户角色。
基本上,这是一个痛苦的屁股。FOS 接口是为字符串表示而非角色实体而构建的。改变实现,你打破了很多东西,即促进用户的 FOS 命令。而且很难准确地确定需要哪些接口才能让 symfony2 安全系统继续正常工作。
我可以重写角色管理代码并尽可能多地使用角色实体,例如:
$user->addRole(new Role('ROLE_FOO'));
但这会破坏命令和可能的现有代码?
或继续使用:
$user->addRole('ROLE_FOO');
addRole()
并在(糟糕的设计)中加入角色/实体管理器代码。
我注意到这是一个灰色区域(具有 FOS 的角色实体)并且已在 symfony2 板上和此处提到过,但没有像样的解决方案。
任何人都有任何经验或可以想到一个体面的解决方案?