Jhipster网关用户如何才能仅从登录用户的服务中获取实体

时间:2018-09-21 13:45:59

标签: java spring-boot microservices jhipster

我正在使用jhipster微服务来构建名为Sport Stat应用程序的项目。我已经使用jhipster生成了以下仅Spring Boot后端微服务:

  • PlayerStatService
  • LeagueService

PlayerStatService具有多个实体,例如Sport,Skill,Player等。每个玩家都可以拥有会话,目标等列表。

体育和技能都是预先定义的。

我还生成了一个网关客户端,可以与上述服务安全地通信。您可以在网关(客户端)上注册并注册为用户。用户可以是正在监视其玩家的Coach。教练可以添加新球员,并开始监视和跟踪他们的状态。教练可以有很多球员(一对多)。

已登录的用户(教练)应仅查看其球员和统计信息,而不能查看其他人的统计信息。我假设我可以在播放器和用户之间具有实体关系,以便可以使用 findByUserIsCurrentUser 来获取当前的用户播放器和统计信息。

我知道,如果它是整体应用程序,则可以轻松使用。

问题:因为用户是由网关上的jhipster生成的,而Player是在PlayerStatService上的,所以我无法在它们之间创建任何关系。我收到此错误。

您的实体不能与用户建立关系,因为它是网关实体

我的问题:是否可以通过使用生成的类和对象(服务,存储库)来实现这种目的?

如果没有,您将如何提出建议,例如:限制用户只能拥有自己的玩家?在调用PlayerStatService RestAPI来获取玩家时,您如何建议我在存储库级别的查询中合并登录用户?

已编辑:我正在使用JWT作为身份验证

1 个答案:

答案 0 :(得分:0)

这不能在网关中完成,必须在服务中完成,理想情况下只能基于令牌中包含的数据:主题,角色或其他声明,这样您的服务就无需查询网关或身份验证提供程序。

如您所见,使用与用户的关系无法做到这一点,但是您可以在实体中添加一个user_id简单字段,并将其与令牌的主题进行匹配。

角色对于限制访问权限也很有用,但是如果角色不足以建模用户属于团队,则可以将team_id添加为令牌的声明。这样一来,您就可以轻松识别教练,因为他/他拥有ROLE_COACH,并且她/他是哪个团队的成员。