在Symfony代码和网络上进行了几个小时的研究之后,我决定在这里问一下。
让我们开始吧:
我有一个分配了 ObjectAce 和 ClassAce 的实体,其中 ClassAce 具有 VIEW 属性集,但 ObjectAce 不。
我的目标是,如果 ObjectAce 具有无视图属性,无论具有什么,则AclVoter会拒绝访问该实体的 ClassAce
似乎这不是Symfony的ACL系统的默认行为,但我也找不到使其成为可能的方法。
有什么想法吗?
更新
最后,我决定创建一个自定义security voter。 仅当传入对象是object identity并且class scope为目标时,此安全选民才会起作用。如果security identity没有对所需资源的类访问权限,但可以访问该类类型的一个或多个对象,则选民将授予访问权限,就像安全标识具有类访问权限时一样。在任何其他要求下,选民投弃权票。
它或多或少是一个虚拟类访问,但仍然只针对特定的域对象。