Spring数据休息和自定义表示

时间:2017-01-29 12:31:20

标签: 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}/members/{member_id}
(3) /users/{user_id}/teamsJoined

以下是我要实施的内容:

  • 由团队中的普通成员访问(1)将返回与管理员完成时不同的字段。
  • 访问(2)将返回(1)
  • 未返回的其他字段
  • 访问(3):
      用户{user_id}的
    • 应该返回所有团队。
    • 另一位成员
    • 应仅返回其团队的交集。

我在考虑使用AOP,但我不确定它是否可行。实现这个的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我不确定基于请求用户公开资源的各种表示(在同一个uri)遵循REST原则。你应该使用另一个uri。

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