我尝试为 ACL 管理创建 3 个功能。
public function postPersist(LifeCycleEventArgs $event){
$em = $event->getEntity();
$entity = $event->getEntity();
$aclProvider = $this->container->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($entity);
try {
$acl = $aclProvider->findAcl($objectIdentity);
} catch (AclNotFoundException $e) {
$acl = $aclProvider->createAcl($objectIdentity);
}
$securityContext = $this->container->get('security.context');
$token = $securityContext->getToken();
$securityIdentity = UserSecurityIdentity::fromToken($token);
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
}
每当一个用户创建某些东西时,服务都会创建 ACL。(事件监听器)
但现在我有一个小问题。我删除了 MySQL-DB 漏洞,每当我创建一个新实体时,我都会出现以下错误消息。
给定的对象标识没有 ACL。
然后我从这个函数中删除try and catch,只让createACL,然后我得到
对象标识已与 acl 关联
我不明白这一点,当然我的数据库是空的......
坦克为您提供帮助。