我刚接触Thymeleaf,目前正在用Springboot开发一个用户管理工具。首先,需要登录账号才能查看个人数据。我的问题是,获取当前登录的用户名,在我的例子中是一封电子邮件,并使用Getmapping调用带有url "/{ email }“的Rest-API?
我的想法是获取securitycontextholder.getcontext().getprincipal()并将其传递给请求调用。最后显示数据
这是我来自控制器层的GetMappping
@GetMapping("/{email}")
public ResponseEntity getApplicantByEmail(@PathVariable String email){
return new ResponseEntity(applicantService.getApplicantByEmail(email), HttpStatus.OK);
}发布于 2020-11-26 04:26:09
您可以通过引入@ControllerAdvice使当前用户可用于百里叶模型
@ControllerAdvice
public class CurrentUserAdvice {
@ModelAttribute("currentEmailAddress")
public String emailAddress(Authentication authentication) {
return authentication.getName();
}
}这将使模型属性currentEmailAddress在百里叶模板中可用。
如果您有一个自定义域对象作为Authentication中的主体,则可以使用相同的模式使整个用户在模型中可用:
@ControllerAdvice
public class CurrentUserAdvice {
@ModelAttribute("currentUser")
public MyUser user(@AuthenticationPrincipal MyUser user) {
return user;
}
}https://stackoverflow.com/questions/65009999
复制相似问题