0

我尝试为 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 关联

我不明白这一点,当然我的数据库是空的......

坦克为您提供帮助。

4

0 回答 0