1

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

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

对于这样的系统,正确的权限系统是什么?
RolesACLsvoters或 别的什么?

谢谢

4

1 回答 1

2

角色

如果您想授予“一般”权限,角色是可以的。

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

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

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

访问控制列表

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

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

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

于 2014-10-20T16:59:40.543 回答