我刚刚开始使用Spring Security ACL。我想获取用户拥有(任何)权限的域对象列表。
例如,系统有1000个“建筑物”,用户可以访问任意数量的这些建筑物。当用户登录时,我想向他们展示他们有权限的建筑物列表。
myAclService.getObjectsForUser('myemail @ gmail.com',Building.class)的内容
我开始认为ACL不能朝这个方向发展,但它必须是一个常见的挑战,所以至少必须有一个模式来解决如何在没有重复数据的情况下与ACL实现这一点。
欢迎任何想法,谢谢!
答案 0 :(得分:1)
我相信你在Spring Security中提供的内容是正确的。 ACL更多来自对象视角而非主题(校长)视角。
您可以检查Spring Security中所有AclService
的SQL代码
JdbcAclService和
JdbcMutableAclService
答案 1 :(得分:0)
您想使用@PostFilter注释
@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, 'admin')")
public List<Buildings> getAll();