代码之家  ›  专栏  ›  技术社区  ›  Jean Barmash

在休眠筛选器中运行代码

  •  2
  • Jean Barmash  · 技术社区  · 15 年前

    我有一个相当复杂的安全机制,是使用ApacheShiro(以前叫JSecurity)实现的。为了了解对象的确切可见性规则,我需要运行一些代码(即查找用户的角色、权限、组等)。我想运行查询,告诉我当前用户有权看到的对象。

    我发现Hibernate过滤器使您能够对对象/查询应用过滤器,这似乎是我在这里可以使用的。

    但是,我发现的示例似乎集中在数据库上(例如,假设我有一个字段/列是可见的,每当它设置为true时都进行筛选)。有没有一种方法可以运行一些代码作为Hibernate过滤器,或者它只是一个很薄的层,可以为所有查询添加一点WHERE子句。

    我实际上是在grails/gorm基础设施内部使用这个,所以可能还有其他一些有效的解决方案。一 plugin exists 它集成了Hibernate过滤器,但是除非我可以将它与一些代码一起作为Hibernate过滤过程的一部分运行,否则它在这里不会真正帮助我。

    1 回复  |  直到 15 年前
        1
  •  2
  •   dgabriel    15 年前

    不幸的是,休眠过滤器无法解决您的问题。它们可能非常有用,但它确实是一个很薄的层,在每个FETCH中都添加了一点WHERE子句。

    既然你使用的是Grails,你可能会发现AOP会给你想要的。看看这个: http://www.infoq.com/articles/aop-with-groovy

    祝你好运。