我想在我的项目中实现对象级权限。更具体地说,会有一个用户、一个学校和一个学生类。每个学生将属于一所学校。系统的每个用户也将属于一所学校。因此,系统的每个用户只能访问属于他学校的学生。
我在很多地方读到过,这可以在 spring security ACL 的帮助下完成。这需要在我的数据库中创建许多 ACL_ 表(如果我没记错的话是 4 个)并且对我的每个对象都有特定的权限!所以我的 ACL_ENTRY 中的行数与对象数一样多!
这对我的应用程序来说太过分了,因为该对象已经知道谁可以访问它,谁不能访问它 - 为什么我还要一个额外的 acl_entry?我想要的是检查要更新的对象是否属于特定用户并返回是否允许。选择也是如此——只返回属于特定用户的对象。
据我所知,这必须在我的数据访问层中完成——如果我在其他任何地方这样做,我就会遇到查询问题(因为我需要一一检查所有对象以查看它们是否属于特定用户)。对于我的数据访问,我使用spring-data,其接口扩展了 JpaRepository。我可以添加自己的保存/选择方法吗?如何从这些方法中获取 User 对象?有没有人为了帮助我开始做类似的事情?