Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring安全ACL获取用户有权访问的域对象列表?_Java_Spring_Spring Security_Acl - Fatal编程技术网

Java 如何使用Spring安全ACL获取用户有权访问的域对象列表?

Java 如何使用Spring安全ACL获取用户有权访问的域对象列表?,java,spring,spring-security,acl,Java,Spring,Spring Security,Acl,我刚刚开始使用Spring安全ACL。我想获取用户有(任何)权限的域对象列表 例如,系统有1000个“建筑物”,用户可以访问任意数量的建筑物。当用户登录时,我想向他们展示他们有权访问的建筑列表 类似于myAclService.getObjectsForUser('myemail@gmail.com,Building.class) 我开始认为ACL不能朝这个方向工作,但这肯定是一个常见的挑战,因此必须至少有一种模式,可以在不复制数据的情况下,与ACL一起实现这一点 欢迎有任何想法,谢谢 我相信你是

我刚刚开始使用Spring安全ACL。我想获取用户有(任何)权限的域对象列表

例如,系统有1000个“建筑物”,用户可以访问任意数量的建筑物。当用户登录时,我想向他们展示他们有权访问的建筑列表

类似于myAclService.getObjectsForUser('myemail@gmail.com,Building.class)

我开始认为ACL不能朝这个方向工作,但这肯定是一个常见的挑战,因此必须至少有一种模式,可以在不复制数据的情况下,与ACL一起实现这一点


欢迎有任何想法,谢谢

我相信你是对的,Spring Security re提供的内容是正确的。ACL更多的是从对象的角度,而不是从主体的角度

您可以从Spring Security检查所有
AclService
s的SQL代码,特别是 和 .

您希望对较小的数据集使用注释

@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, 'admin')")
public List<Buildings> getAll();
@PostFilter(“hasPermission(filterObject,'read')或hasPermission(filterObject,'admin'))
公共列表getAll();

对于更大的数据集,您可能希望在我对

的回答中使用查询,Spring Security 4现在支持使用Spring数据的查询参数。检查文档。嗨,我一直在研究文档,但不确定查询参数如何应用于获取域对象列表的问题。你能进一步解释一下吗?ThanksHi@TomCrowder你解决了这个问题吗?我正试图找到一种方法来解决同样的问题,因为它还没有在SpringSecurityACL中实现。如果你能分享一下你是怎么做的,那就太好了。谢谢,我没有(尽管Spring的团队显然在关注这些问题!)。我考虑过直接查询底层表(在适当的情况下添加索引),但暂时搁置了这一部分开发!如果你也发现了什么,请告诉我……这能回答你的问题吗?这不是你要找的吗?我有一些查询实际ACL表的代码。以上内容将筛选列表中当前用户无权访问的任何对象。对于大型数据集,不建议这样做,请参阅查看谁为上述链接编写了第二个答案:)