Symfony2中的管理权限方法


Managing permissions method in Symfony2

我正在创建一个Symfony2网站,该网站有用户,每个用户都可以拥有多个权限,如下所示:

User1: manage users , manage sales , manage repository
User2: manage repository
user3: manage sales , manage repository
...

对于这样一个系统,使用什么是正确的权限系统
RolesACLsvoters或其他什么

感谢

角色

如果您想授予"常规"权限,则可以使用角色。

例如,如果您需要用户能够管理所有或用户,则可以为其创建一个角色,例如ROLE_USER_MANAGER。或者,如果您想授予他管理销售的权限,您可以授予他ROLE_SALES_MANAGER角色。

因此,基本上,当您对某些实体拥有有限数量的权限时,通常使用角色

通过授予包含实体名称和id的角色(例如ROLE_MANAGER_REPOSITORY_23),然后使用自定义投票者,您可以将它们用于其他用途。您可以知道,具有该角色的用户可以管理id为23的存储库。尽管这种方法可行,但我个人并不喜欢

ACL

如果你有很多动态权限授予,特别是针对单个模型的权限授予,那么ACL就是你的选择。通常性能稍差,因为它需要从数据存储中获取更多数据,但更适合此目的。

使用Symfony2ACL,授予和检查权限非常容易,甚至允许单个用户相互授予权限。

此外,Symfony ACL文档的介绍部分向您展示了这两种方法,并指出了每种方法的一些起伏。