【问题标题】:Doctrine 2 - Filter loaded entities based on ACLDoctrine 2 - 基于 ACL 过滤加载的实体
【发布时间】:2012-01-18 03:44:22
【问题描述】:

Doctrine 2 中的事件监听器非常有用。我可以使用它们在实体创建、更新和删除时有效地实施 ACL。但是,我找不到加载实体的方法。

加载实体后会触发 postLoad 事件,我可以在事件侦听器中检查 ACL,但是我该怎么办?我想从结果集中静默删除带有 ACL 拒绝的实体,以便只返回用户有权查看的实体。

在侦听器中,我尝试了$entity = nullunset($entity),但它们都不起作用,因为 UOW 仍然拥有引用。我可以使用$entitymanager->detatch($entity),但这只会将其从实体管理器中删除,而不是破坏实体。

那么,有什么方法可以做我想要达到的目标吗?也许有不同的路径?

【问题讨论】:

    标签: doctrine-orm acl


    【解决方案1】:

    做到这一点的方法是使用学说过滤器。实体中需要有一个可以过滤的字段,然后离开。不需要有 postLoad 事件监听器。见http://docs.doctrine-project.org/en/latest/reference/filters.html

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多