SpringSecurity项目使用总结
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();
设置用户信息:
authResult
为Authentication
对象
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()));
}