Java 限制spring数据rest返回的文档
classJava 限制spring数据rest返回的文档,java,spring,spring-security,spring-data-mongodb,spring-data-rest,Java,Spring,Spring Security,Spring Data Mongodb,Spring Data Rest,classDog使用私有字段owner将所有者用户名保存在classUser中(实现UserDetails): 使用spring数据mongodb保存这些文档,并使用spring数据rest公开这些文档。用户使用Spring Security进行身份验证,因此它可以作为@AuthenticationPrincipal提供 要求REST只能访问用户拥有的狗。是否可以调整spring data rest,使其仅返回集合dogs中文档的一个子集,带有“owner”字段的文档与身份验证主体返回的User
Dog
使用私有字段owner
将所有者用户名保存在classUser
中(实现UserDetails
):
使用spring数据mongodb
保存这些文档,并使用spring数据rest
公开这些文档。用户使用Spring Security进行身份验证,因此它可以作为@AuthenticationPrincipal
提供
要求REST只能访问用户拥有的狗。是否可以调整spring data rest,使其仅返回集合
dogs
中文档的一个子集,带有“owner”字段的文档与身份验证主体返回的User
实例中的用户名相同?在这种情况下,我所做的是实现自定义
调用程序是SpringDataREST创建的调用程序的代理。其想法是截取invokeFindAll
(或其他应按所有权进行过滤的方法),并将实现过滤的查询方法委托给用户
注意,我使用的是Spring数据JPA并实现了过滤谓词。我相信类似的方法在Mongo上应该是可行的。在这种情况下,我所做的是实现定制 调用程序是SpringDataREST创建的调用程序的代理。其想法是截取
invokeFindAll
(或其他应按所有权进行过滤的方法),并将实现过滤的查询方法委托给用户
注意,我使用的是Spring数据JPA并实现了过滤谓词。我相信类似的方法在Mongo也应该是可行的
@Document
public class Dog {
@Id
private ObjectId id;
private String owner;
}
@Document
public class User implements UserDetails {
@Id
private ObjectId id;
private String username;
}