Spring数据rest和自定义表示

Spring数据rest和自定义表示,spring,spring-security,jackson,spring-data-rest,Spring,Spring Security,Jackson,Spring Data Rest,我使用的是Spring Data Rest(SDR)和Spring Security(SS)的当前版本,并拥有以下实体: 用户:包含已加入的团队列表和另一个已管理的团队列表 团队:包含成员列表和管理员列表 我想做的是在当前用户的权限下自定义SDR为实体返回的信息。我知道SDR中的投影,但我认为它们不适合我当前的问题,因为这应该透明地进行,而不需要用户在请求中指定投影 鉴于以下情况: (1) /teams/{team_id}/members (2) /teams/{team_id}/membe

我使用的是Spring Data Rest(SDR)和Spring Security(SS)的当前版本,并拥有以下实体:

  • 用户:包含已加入的团队列表和另一个已管理的团队列表
  • 团队:包含成员列表和管理员列表
我想做的是在当前用户的权限下自定义SDR为实体返回的信息。我知道SDR中的投影,但我认为它们不适合我当前的问题,因为这应该透明地进行,而不需要用户在请求中指定投影

鉴于以下情况:

(1) /teams/{team_id}/members
(2) /teams/{team_id}/members/{member_id}
(3) /users/{user_id}/teamsJoined
以下是我想要实现的:

  • 团队的普通成员访问(1)将返回与管理员访问不同的字段
  • 访问(2)将返回(1)未返回的其他字段
  • 访问(3):
    • 由具有{user_id}的用户创建,应返回所有团队
    • 由另一个成员返回,只能返回其团队的交叉点

我在考虑使用AOP,但我不确定它是否有效。实现这一点的最佳方法是什么?

我不确定基于请求用户公开资源的各种表示(在同一uri上)是否遵循REST原理。您应该为此使用另一个uri


也许您可以将原始实体中只有某些用户可见的数据拆分为另一个“子”实体(1-1关系),并限制对这些相关资源端点的访问。您可以在存储库方法上使用
@PreAuthorize
@PostFilter
注释,根据已识别的用户限制对资源的访问。

我不确定根据请求用户公开资源的各种表示(在同一uri上)是否遵循REST原理。您应该为此使用另一个uri


也许您可以将原始实体中只有某些用户可见的数据拆分为另一个“子”实体(1-1关系),并限制对这些相关资源端点的访问。您可以在存储库方法上使用
@PreAuthorize
@PostFilter
注释,根据已识别的用户限制对资源的访问。

您可以通过编程方式应用投影,而不是将其传入。查看此线程以了解想法:您可以通过编程应用投影,而不是将其传入。有关想法,请参阅此线程: