SpringSecurity项目使用总结

Lou.Chen
小于 1 分钟

SpringSecurity项目使用总结

一、在SpringSecurity中获取和设置的登录用户信息

在任何地方获取和设置用户登录信息

  • 直接注入Authentication对象

通过getPrincipal()获取用户信息

@GetMapping("/hr/info")
public Hr getCurrentHr(Authentication authentication) {
    return ((Hr) authentication.getPrincipal());
}
  • SecurityContextHolder.getContext().getAuthentication()
  • 是一个静态方法,也就是利用这个方法,我们可以随时随地拿到用户信息(需要注意 ThreadLocal 的限制),即当前获取的不能为其他线程或子线程,必须为当前的本地线程

获取用户信息:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

设置用户信息:

authResultAuthentication对象

SecurityContextHolder.getContext().setAuthentication(authResult);

    @PutMapping("/hr/info")
	//这里直接注入Authentication
    public ResponseBean updateHr(@RequestBody Hr hr,Authentication authentication){
            SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(hr,authentication.getCredentials(),authentication.getAuthorities()));
 
    }