在Symfony2中管理权限方法

时间:2014-10-20 15:37:26

标签: php symfony user-permissions symfony-security

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

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

对于这样的系统,使用什么是正确的许可系统? RolesACLsvoters或其他?

由于

1 个答案:

答案 0 :(得分:2)

角色

如果您要授予“常规”权限,则角色可以。

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

基本上,如果有限数量的权限通常某些实体,请使用角色

可以将其用于其他内容,方法是授予包含实体名称和ID的角色,例如ROLE_MANAGER_REPOSITORY_23,然后使用自定义选民,您可以知道具有该角色的用户可以管理存储库虽然这种方法可行,但我个人不喜欢它。

ACL

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

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

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