前提:
Web服务通过REST公开其数据。每条记录都属于创建记录的用户(行级安全性)。用户只能检索自己的记录。Spring Data REST:一个实体的多个端点
@RepositoryRestResource(path = "talks")
public interface TalkRepository extends PagingAndSortingRepository<Talk, Long> {
@Override
@Query("select t from Talk t where t.owner.id= ?#{principal?.id}")
Page<Talk> findAll(Pageable pageable);
}
该存储库现在可在/talks
端点下使用。
问:
有没有一种方法1)在多个端点公开相同的域实体和2)定义不同@Query
注释取决于终点?
/talks
我想那一定是我的默认实现开放的管理角色/me/talks
这是对本金和作为/me/**
端点被暴露的部分适用行级安全端点公开API来实施客户。
此问题部分与https://jira.spring.io/browse/DATAREST-555有关,但仅限于目前不支持附加路径段。
理由:
我想不必把过多的条件逻辑到规划环境地政司查询,如is owner or has_some_role
(一些例子here)的想法。此外,通过与默认API不同的策略来保护/me/**
端点变得容易(例如,只有/me/**
可能受到OAuth2的支配)。
只需编写一个控制器,将其绑定到一个URI并自己调用存储库? –