spring security有两种方法可以在登录后获取用户信息

    1. SecurityContextHolder.getContext().getAuthentication()

    Spring Security 的登录流程,在登录成功的最后一步,进入到 successfulAuthentication 回调中,在该回调方法中,能看到用户信息的保存位置:

    1. SecurityContextHolder.getContext().setAuthentication(authResult);

    这样一行简单的保存代码,至少带给我们两方面的信息:

    1. 以后在任何地方,只要想获取用户信息,只需要调用 SecurityContextHolder.getContext().getAuthentication() 就可以获取到。
    2. 以后在任何地方,只要想更新用户信息,只要调用 SecurityContextHolder.getContext().setAuthentication(authResult); 就可以更新。

    这是一个静态方法,可以随时随地获取

    1. 在 Controller 的方法中,加入 Authentication 参数
      1. @GetMapping("/hr/info")
      2. public Hr getCurrentHr(Authentication authentication) {
      3. return ((Hr) authentication.getPrincipal());
      4. }