我正在使用Symfony acls,并且注意到当第一次创建类acl时,会创建一个object_identifier = class的acl_object_identities。
但是如果您插入ace类(acl_entries),则object_identity_id设置为NULL。我想知道为什么之前创建的acl_object_identity没有被使用?
acl_class表: 6 xxxxxxxx/myclass
acl_object_identities表: 63 NULL 6 class 1
acl_entries表: 199 6 NULL 1 NULL 3 1073741823 1 all 0 0
不应该是这样吗? 199 6 63 1 NULL 3 1073741823 1 all 0 0
我不明白为什么创建了一个identity objet类,但没有与类条目一起使用。
这是我的代码,也许有些问题:
//find or create acl
$classIdentity = new ObjectIdentity('class', ClassUtils::getRealClass($class));
$aclProvider = $this->getService('security.acl.provider');
try {
$acl = $aclProvider->findAcl($classIdentity);
} catch (AclNotFoundException $e) {
$acl = $aclProvider->createAcl($classIdentity);
}
//insert class aces
$maskBuilder = new MaskBuilder(128);
$securityId = new RoleSecurityIdentity('ROLE_ADMIN');
$acl->insertClassAce($securityId, $maskBuilder->get());
$aclProvider->updateAcl($acl);
谢谢