spring security有两种方法可以在登录后获取用户信息
- SecurityContextHolder.getContext().getAuthentication()
Spring Security 的登录流程,在登录成功的最后一步,进入到 successfulAuthentication 回调中,在该回调方法中,能看到用户信息的保存位置:
SecurityContextHolder.getContext().setAuthentication(authResult);
这样一行简单的保存代码,至少带给我们两方面的信息:
- 以后在任何地方,只要想获取用户信息,只需要调用 SecurityContextHolder.getContext().getAuthentication() 就可以获取到。
- 以后在任何地方,只要想更新用户信息,只要调用 SecurityContextHolder.getContext().setAuthentication(authResult); 就可以更新。
这是一个静态方法,可以随时随地获取
- 在 Controller 的方法中,加入 Authentication 参数
@GetMapping("/hr/info")
public Hr getCurrentHr(Authentication authentication) {
return ((Hr) authentication.getPrincipal());
}