Spring 当前用户作为 Hateoas 资源

Spring current user as Hateoas resource

这是我的第一个 Spring 项目。我有一个公开为 RepositoryRestResource 的用户存储库。我为非常基本的身份验证设置了 Spring 安全设置。我想做的是从我的 AuthenticationController return 当前用户的 Hateoas 资源,而无需维护资源组装器。我想从 AuthenticationController 内部使用用户 RepositoryRestResource 并按原样 return 资源。现在,我有这样的东西:

@RestController
public class AuthenticationController {

    @RequestMapping("/user")
    public Principal user(Principal user) {
        return user;
    }
}

我可以从 principal 或类似的东西获取用户实体:

Resource<User> getCurrentUser(@ModelAttribute User self){...}

而且我想 return 用户的 Hateoas 资源而不是 Principal,方法是从控制器访问存储库 rest 资源。我怎样才能做到这一点,或者要求它是一件奇怪的事情吗?

使用您的主要详细信息从存储库中检索您的用户实体,例如:

@BasePathAwareController
public class MyUserController {

  @Autowired UserAccountRepository repository;

  @GetMapping("/user")
  @ResponseBody
  public Resource<?> getUser(@AuthenticationPrincipal UserDetails principal, PersistentEntityResourceAssembler assembler) {

    if (null==principal) {
      return null;
    }

    UserAccount user = repository.findByUsername(principal.getUsername());
    return assembler.toFullResource(user);
  }
}

备注: