Spring当前用户作为Hateoas资源
这是我的第一个春季项目。我有一个作为RepositoryRestResource公开的用户存储库。我已经为非常基本的身份验证设置了Spring安全性。我想做的是从AuthenticationController返回当前用户的Hateoas资源,而不必维护资源汇编程序。我想从AuthenticationController内部使用用户RepositoryRestResource并按原样返回资源。现在,我有这样的想法:Spring当前用户作为Hateoas资源,spring,security,hateoas,Spring,Security,Hateoas,这是我的第一个春季项目。我有一个作为RepositoryRestResource公开的用户存储库。我已经为非常基本的身份验证设置了Spring安全性。我想做的是从AuthenticationController返回当前用户的Hateoas资源,而不必维护资源汇编程序。我想从AuthenticationController内部使用用户RepositoryRestResource并按原样返回资源。现在,我有这样的想法: @RestController public class Authenticat
@RestController
public class AuthenticationController {
@RequestMapping("/user")
public Principal user(Principal user) {
return user;
}
}
我可以从主体获取用户实体,或者使用类似的方式:
Resource<User> getCurrentUser(@ModelAttribute User self){...}
资源getCurrentUser(@ModelAttribute用户self){…}
我希望通过从控制器访问存储库rest资源来返回用户的Hateoas资源,而不是主体。我如何才能做到这一点,或者这是一件奇怪的事情吗?使用您的主要详细信息从存储库中检索您的用户实体,例如:
@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);
}
}
@BasePathAwareController
公共类MyUserController{
@自动连线UserAccountRepository;
@GetMapping(“/user”)
@应答器
公共资源getUser(@AuthenticationPrincipal UserDetails principal,PersistentEntityResourcesAssembler汇编程序){
if(null==主体){
返回null;
}
UserAccount user=repository.findByUsername(principal.getUsername());
返回assembler.toFullResource(用户);
}
}
注:
-替换标准控制器注释以使用基本REST URI@BasePathAwareController
- 看