39.Spring Security 动态更新用户信息

 

Spring Security 中用户信息更新问题。

  • 如何获取用户信息

在 Spring Security 中提供了一个 Authentication ,我们可以在一个 Controller 或者一个 Service 中,直接注入 Authentication,注入成功后,就能直接使用。

@GetMapping("/hr/info")
public Hr getCurrentHr(Authentication authentication) {
    return ((Hr) authentication.getPrincipal());
}

这个方法用来获取当前用户信息,方法参数就是由 Spring Security 提供的。

  • 如何更新用户信息
@PutMapping("/hr/info")
public RespBean updateHr(@RequestBody Hr hr,Authentication authentication) {
    if (hrService.updateHr(hr) == 1) {
        SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(hr, authentication.getCredentials(), authentication.getAuthorities()));
        return RespBean.ok("更新成功!");
    }
    return RespBean.error("更新失败!");
}

这里的核心部分就是 SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(hr, authentication.getCredentials(), authentication.getAuthorities()));,我们要做的,就是重新构建一个 Authentication 实例放到 Context 中去。

39.1 前端数据统一

前端的数据同步修改,其实就是多个组件之间共享数据。Vue 中对此有很多种解决方案,但是比较主流的方案是 Vuex,实际上就是把数据放在一个公共的地方,所有组件都能读取到,一改俱改。

扫码关注微信公众号 江南一点雨,回复 2TB,获取超 2TB Java 学习教程~

喜欢这篇文章吗?扫码关注公众号【江南一点雨】【江南一点雨】专注于 SPRING BOOT+微服务以及前后端分离技术,每天推送原创技术干货,关注后回复 JAVA,领取松哥为你精心准备的 JAVA 干货!

本文遵守 Attribution-NonCommercial 4.0 International 许可协议。 Attribution-NonCommercial 4.0 International