我尝试为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就由服务创建。(Eventlistener)
但现在我有一点问题。 我删除漏洞MySQL-DB,每当我创建一个新的实体时,我都会收到以下错误信息。
给定的对象标识没有ACL。
然后我从这个函数中删除try和catch,只让createACL,然后我得到
对象标识已与acl
关联
我不明白这一点,当然我的数据库是空的......
坦克为你提供帮助。