如何使用symfony ACL分配ROLE权限

时间:2014-03-03 09:09:23

标签: php symfony acl

我正在学习本教程

http://symfony.com/doc/current/cookbook/security/acl.html#creating-an-acl-and-adding-an-ace

$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);

这使得当前用户具有OWNER权限,他可以编辑,删除evrything。

现在,我想为EDIT个用户添加ROLE_EDIT权限 MASTER个用户的ROLE_ADMIN权限

我可以在那里分配角色吗

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作:

    $aclProvider = $this->getContainer()->get('security.acl.provider');

    // Use class for object identity as below
    $oid = new ObjectIdentity('acme_post', 'Your\\AcmeBundle\\Entity\\Post');

    $acl = $aclProvider->createAcl($oid);

    $securityIdentity = new RoleSecurityIdentity("ROLE_ADMIN");
    // grant owner access to users with above role
    $acl->insertClassAce($securityIdentity, MaskBuilder::MASK_OWNER);

这里的神奇之处在于,您需要使用实体类启动ObjectIdentity,而不是使用实体对象启动insertObjectAce,然后使用ObjectIdentity 然后将insertClassAce用于基于角色的 $securityIdentity