如何使用 Spring Security、Hibernate 和行级 ACL 进行分页

Posted

技术标签:

【中文标题】如何使用 Spring Security、Hibernate 和行级 ACL 进行分页【英文标题】:How can I paginate with Spring Security, Hibernate and row level ACL 【发布时间】:2013-11-06 09:15:45 【问题描述】:

我正在阅读有关 Spring Security 的内容,想知道是否可以将 Spring ACL 与休眠和分页一起使用。生成的 SQL 肯定很吓人,但可以自动生成。如果数据库支持recursive query evaluation,甚至是possible to use hierarchical ACL。

使用后过滤器不是解决方案,因为它会破坏分页,并且与数据库内的 ACL 过滤相比是不必要的开销。

所以我实际上有构建解决方案的部分。我想知道是否有人已经这样做了。

链接:

Similar question 从 2012 年开始没有回应 link list about this question

【问题讨论】:

【参考方案1】:

是的,您的挑战有解决方案。该字段称为动态数据屏蔽和动态数据过滤。

我们的想法是在应用程序和数据库之间有一个代理。代理将应用过滤,以便仅将相关的授权数据返回到应用程序,从而保持分页不变。

看看:

GreenSQL 公理数据访问过滤器 MD (demo)

【讨论】:

【参考方案2】:

我处理这个问题的方法是首先通过solution I gave here 获取我的用户可以访问的 ID 列表。

然后,我使用此 ID 列表对该列表进行查询 IN。

【讨论】:

什么是ID列表显着增长?你遇到过这样的情况吗?

以上是关于如何使用 Spring Security、Hibernate 和行级 ACL 进行分页的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 spring-security 登录屏幕?

如何使用 Spring-Security 3 和 Hibernate 4 将 spring security xml 配置 hibernate 转换为 java config

如何使用 Spring-Boot 播种 Spring-Security

如何使用 Spring Security 管理 Spring Boot 中的会话?

如何使用 Spring Security / Spring MVC 处理表单登录

如何使用spring-security通过用户名和密码登录?