2
ACL類擁有該類所有對象的權限嗎? 或者只有權限而不是對象? 讓我在Symfony2上解釋:Symfony2:ClassACE和ObjectACE
我有一個實體訂單和5個創建的訂單。如果我授予所有者對課程權限的授權,我可以授予編輯所有對象的權限?
$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);
編輯 其實我有2個問題:
第一個問題: 我的問題是,當我使用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);
}
用戶管理員擁有所有者權限!
這個例子不工作:
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用戶不必補助的對象!
第二個問題: 如果我申請人授予給類訂單我沒有授予訪問實體:讓我來解釋:
$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);
我需要的管理員用戶始終可以訪問訂單實體的所有對象。
對於第一個問題:是你的角色來自哪裏數據庫(例如:你有一個角色實體不同於Symfony \ Component \ Security \ Core \ Role)? – GergelyPolonkai
是的!我的角色來自數據庫。我有實體類Role實現RoleInterface – Mauro