gpt4 book ai didi

java - 限制 spring-data-rest 返回的文档

转载 作者:行者123 更新时间:2023-12-02 03:55:12 24 4
gpt4 key购买 nike

Dog 使用私有(private)字段 owner 将所有者用户名保留在类 User 中(该类实现 UserDetails):

@Document
public class Dog {

@Id
private ObjectId id;

private String owner;
}

@Document
public class User implements UserDetails {

@Id
private ObjectId id;

private String username;

}

这些文档使用 spring-data-mongodb 持久保存,并使用 spring-data-rest 公开。用户使用 Spring Security 进行身份验证,因此可用作 @AuthenticationPrincipal

要求REST只能访问用户拥有的狗。是否可以调整 spring-data-rest 以仅返回集合 dogs 中的文档子集,其中“owner”字段与 User 中的用户名相同code> 身份验证主体返回的实例?

最佳答案

在这种情况下我所做的是实现自定义 RepositoryInvoker .

调用者是 Spring Data Rest 创建的调用者的代理。这个想法是拦截 invokeFindAll (或其他应按所有权过滤的方法)并委托(delegate)给实现过滤的查询方法。

请注意,我使用的是 Spring Data JPA 和 Specfications实现过滤谓词。我相信类似的方法对于 Mongo 来说应该是可行的。

关于java - 限制 spring-data-rest 返回的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35558871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com