如何获取用户对Spring Security ACL具有权限的域对象列表?

时间:2015-04-07 21:49:47

标签: java spring spring-security acl

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

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

myAclService.getObjectsForUser('myemail @ gmail.com',Building.class)的内容

我开始认为ACL不能朝这个方向发展,但它必须是一个常见的挑战,所以至少必须有一个模式来解决如何在没有重复数据的情况下与ACL实现这一点。

欢迎任何想法,谢谢!

2 个答案:

答案 0 :(得分:1)

我相信你在Spring Security中提供的内容是正确的。 ACL更多来自对象视角而非主题(校长)视角。

您可以检查Spring Security中所有AclService的SQL代码 JdbcAclServiceJdbcMutableAclService

答案 1 :(得分:0)

您想使用@PostFilter注释

@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, 'admin')")
public List<Buildings> getAll();