gpt4 book ai didi

php - Symfony2 : ClassACE and ObjectACE

转载 作者:行者123 更新时间:2023-12-04 05:33:39 27 4
gpt4 key购买 nike

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 实体的所有对象。

最佳答案

我修好了!

问题出在用户实体上的 getRoles 方法上。

之前是这样的:

function getRoles() {
return $this->roles->toArray();
}

我已经改为:
function getRoles()
{
$roles = array();
foreach($this->userRoles as $userRole) {
$roles[] = $userRole->getRole();
}
return $roles;
}

如果有人知道我为什么会感激

关于php - Symfony2 : ClassACE and ObjectACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com