在实体的复杂访问设置中使用Spring ACL

时间:2019-03-18 05:34:51

标签: spring spring-boot acl

我正在开发Spring Boot应用程序,其中spring-data-rest是核心依赖项之一。这样,为了保护自动生成的端点和手动端点,我一直使用基于角色的方法和自定义PermissionEvaluator来处理特定于对象的身份验证检查。这可行,但太麻烦了,当我需要过滤后的分页响应时会失败。因此,我计划实施ACL。现在,我对实体的授权流程相当复杂。

用户被映射到个人资料实体(MANY TO MANY)。 target实体也映射到单独的配置文件实体(MANY TO MANY),这两个配置文件实体彼此映射(MANY TO MANY)。要检查特定用户是否对target实体对象具有许可权,我需要检查我的PermissionEvaluator中应用逻辑中的关系。

现在,如果我决定仅在ACL中实现此功能,那么我对如何最好地做到这一点感到困惑。我最初的想法是直接在ACL表中为每个用户(原理)创建对象列表。这意味着如果更改了权限,则每次都需要用新对象更新ACL表。这是正确的方法吗?有一个更好的方法吗?经常修改ACL表是否还可以?

摘要:如果检查用户是否可以访问对象的逻辑很复杂并且需要其他表中的数据,那么如何使用ACL有效地处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

我正在为Spring Data JPA / Rest开发ACL扩展,它可以解决您的所有问题-还有更多。学习它是如何工作需要一些时间,但是与为自己创建所有这些功能相比,它仍然需要更少的时间。

您可以使用实体类中的注释来设置访问规则-仅此而已。它将影响自动生成的端点和手动端点,甚至会影响数据JPA存储库方法。

Spring Data JPA ACL