一、使用注解 @AuthenticationPrincipal
@GetMapping("/user")
public String user(@AuthenticationPrincipal Principal principal, Model model){
model.addAttribute("username", principal.getName());
return "user/user";
}
@AuthenticationPrincipal Principal principal 返回的是userdetails 可以使用getUsername()方法获取用户名,使用getPassword()获取密码,常用就获取用户名 也可以使用如下:进行获取 @AuthenticationPrincipal UserDetails user 如下图:
二、SecurityContextHolder方法获取
SecurityContextHolder.getContext().getAuthentication(); 也可以获取,如下:
@GetMapping("/user")
public String user( Model model){
UserDetails userDetails = (UserDetails)SecurityContextHolder
.getContext()
.getAuthentication()
.getPrincipal();
System.out.println("userDetails.getUsername() = " + userDetails.getUsername());
model.addAttribute("username", userDetails.getUsername());
return "user/user";
}
总之,在controller中获取用户认证信息还是很简单的,方法很多