Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 限制spring数据rest返回的文档_Java_Spring_Spring Security_Spring Data Mongodb_Spring Data Rest - Fatal编程技术网

Java 限制spring数据rest返回的文档

Java 限制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

class
Dog
使用私有字段
owner
将所有者用户名保存在class
User
中(实现
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;

}