类Dog使用私有字段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公开。用户是使用Security进行身份验证的,因此它可以作为@AuthenticationPrincipal使用。
要求REST只能访问用户拥有的狗。是否可以调整spring-data-rest,使其只返回集合dogs中的一个文档子集,其中带有'owner‘字段的文档与身份验证主体返回的User实例中的用户名相同?
发布于 2016-02-28 19:46:11
在这种情况下,我所做的是实现自定义RepositoryInvoker。
调用者是Spring数据Rest创建的代理。其想法是拦截invokeFindAll (或其他应按所有权进行筛选的方法),并将其委托给实现筛选的查询方法。
注意,I使用Spring和光谱实现过滤谓词。我认为类似的方法在蒙戈应该可行。
https://stackoverflow.com/questions/35558871
复制相似问题