ACL 类对该类的所有对象都有权限吗?还是只对自己有权限而不对对象有权限?让我解释一下 Symfony2:
我有一个实体订单和 5 个创建的订单。如果我向 Order 类授予所有者权限,我有权编辑所有对象吗?
$objectIdentity = new ObjectIdentity('class', 'Acme\DemoBundle\Entity\Order');
$securityIdentity = new RoleSecurityIdentity($role->getRole());
$acl = $aclProvider->createAcl($objectIdentity);
$acl->insertClassAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
编辑 实际上我有两个问题:
第一个问题: 我遇到的问题是当我使用 RoleSecurityIdentity 时。它对我不起作用。如果我使用 UserSecurityIdentity 对每个对象都非常有效。这个例子工作正常:
foreach($orders as $order) {
$objectIdentity = ObjectIdentity::fromDomainObject($salesOrder);
$acl = $aclProvider->createAcl($objectIdentity);
$securityIdentity = new UserSecurityIdentity(
'admin',
'Acme\CoreBundle\Entity\User');
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
}
用户管理员拥有 OWNER 授权!
这个例子不起作用:
foreach($orders as $order) {
$objectIdentity = ObjectIdentity::fromDomainObject($salesOrder);
$acl = $aclProvider->createAcl($objectIdentity);
$securityIdentity = new RoleSecurityIdentity('ROLE_ADMIN');
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
}
具有 ROLE_ADMIN 的用户没有对对象的授权!
第二个问题: 如果我将 OWNER 授予类 Order 我没有授予访问实体的权限:让我解释一下:
$objectIdentity = new ObjectIdentity('class', 'Neventum\PaymentBundle\Entity\SalesOrder');
$acl = $aclProvider->createAcl($objectIdentity);
$securityIdentity = UserSecurityIdentity::fromAccount($admin);
$acl->insertClassAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
我需要管理员用户始终可以访问 Order 实体的所有对象。