Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2中的权限管理方法_Php_Symfony_User Permissions_Symfony Security - Fatal编程技术网

Php Symfony2中的权限管理方法

Php Symfony2中的权限管理方法,php,symfony,user-permissions,symfony-security,Php,Symfony,User Permissions,Symfony Security,我正在创建一个Symfony2网站,该网站拥有用户,每个用户都可以拥有如下多个权限: User1: manage users , manage sales , manage repository User2: manage repository user3: manage sales , manage repository ... 对于这样的系统,正确的权限系统是什么? 角色或ACL或投票者或其他什么? 谢谢角色 如果要授予“常规”权限,则角色可以 例如,如果您需要用户能够管理所有或多个用户,

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

User1: manage users , manage sales , manage repository
User2: manage repository
user3: manage sales , manage repository
...
对于这样的系统,正确的权限系统是什么?
角色
ACL
投票者
或其他什么?

谢谢

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

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

因此,基本上,当您对某些实体拥有有限的权限时,可以使用角色

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

国际计算语言学协会 如果您有大量的动态权限授予,特别是针对单个模型的,那么ACL就是一种方法。它通常性能稍差,因为它需要从数据存储中获取更多数据,但更适合于此目的

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

此外,的介绍部分向您展示了这两种方法,并指出了每种方法的一些优缺点