繁体   English   中英

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

[英]How do I get a list of domain objects a user has permissions for with Spring Security ACLs?

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

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

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

我开始认为 ACL 在这个方向上不起作用,但这一定是一个共同的挑战,所以至少必须有一个模式来实现这一点,同时 ACL 不会重复数据。

欢迎任何想法,谢谢!

我相信您是对的,Spring Security 中提供的内容是正确的。 ACL 更多地是从客体的角度而不是从主体(主体)的角度。

您可以从 Spring Security 中检查所有AclService的 SQL 代码,特别是JdbcAclServiceJdbcMutableAclService

您想对较小的数据集使用@PostFilter注释

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

对于较大的数据集,您可能希望在我对如何获取用户可以使用 ACL 相关表访问的对象列表的回答中使用查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM