在 Hibernate 过滤器中运行代码

发布于 2024-08-09 12:25:24 字数 496 浏览 9 评论 0原文

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

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

但是,我发现的示例似乎以数据库为中心(即说我有一个字段/列 isVisible,只要将其设置为 true 就进行过滤)。有没有办法可以将一些代码作为休眠过滤器运行,或者它只是一个薄层,为所有查询添加一点 WHERE 子句。

我实际上是在 Grails / GORM 基础设施中使用它,所以也许还有一些其他有效的解决方案。一个 插件 集成了 hibernate 过滤器,但除非我可以将它与一些代码一起使用来运行休眠过滤过程的一部分,它在这里对我没有真正的帮助。

I have a fairly sophisticated security mechanism that I implemented using Apache Shiro (formerly JSecurity). In order to know the exact visibility rules for an object, I need to run some code (i.e. lookup user's roles, permissions, groups, etc). I'd like to run queries that tell me objects that the current user is authorized to see.

I found that hibernate filters give you ability to apply a filter to your objects / queries, which seems to be what I could use here.

However, the examples I found seem to be centered on the database (i.e. say I have a field / column isVisible, filter whenever it's set to true). Is there a way I can run some code as a hibernate filter, or is it just a thin layer that adds a little WHERE clause to all your queries.

I am actually using this inside Grails / GORM infrastructure, so perhaps there are some other solutions that are valid. A plugin exists that integrates hibernate filters, but unless I can use it with some code to run as part of hibernate filtering process, it won't really help me here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

被你宠の有点坏 2024-08-16 12:25:24

不幸的是,Hibernate 过滤器无法解决您的问题。它们可能非常有用,但它只是一个薄层,为每次获取添加了一些 WHERE 子句。

由于您正在使用 Grails,您可能会发现 AOP 能够满足您的需求。看看这个: http://www.infoq.com/articles/aop- with-groovy

祝你好运。

Unfortunately, Hibernate filters will not solve your problem. They can be very useful, but it is exactly a thin layer that adds a little WHERE clause to every fetch.

Since you're using Grails, you might find that AOP will give you what you're looking for. Take a look at this: http://www.infoq.com/articles/aop-with-groovy

Good luck.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文