Spring Security 如何动态更新已登录用户信息?松哥来和大家捋一捋

今日干货

Spring Security 如何动态更新已登录用户信息?松哥来和大家捋一捋

刚刚发表

查看: 66666 回复:666

公众号后台回复 ssm,免费获取松哥纯手敲的 SSM 框架学习干货。

前两天松哥发了一篇文章,和大家仔细的过了一遍 Spring Security 的登录流程:

  • 松哥手把手带你捋一遍 Spring Security 登录流程

在这篇文章中,我和大家详细分享了 Spring Security 的登录流程,在登录成功的最后一步,进入到 successfulAuthentication 回调中,在该回调方法中,小伙伴们看到了用户信息的保存位置:

SecurityContextHolder.getContext().setAuthentication(authResult);

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

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

1.获取用户登录信息

用户信息的获取,其实办法很多,上面提到的 SecurityContextHolder.getContext().getAuthentication() 是一个静态方法,也就是利用这个方法,我们可以随时随地拿到用户信息(需要注意 ThreadLocal 的限制)。

除了这种方式之外,我们也可以在 Controller 中的方法上,直接就可以注入 Authentication 对象,进而获取到当前用户信息,像下面这样:

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

当然,关于用户信息获取的方式之前已经和大家聊过了,这里我就不再赘述,如果对如何获取 Spring Security 中用户信息还不熟悉,大家可以参考松哥之前的文章: 松哥手把手带你捋一遍 Spring Security 登录流程

今天主要是想和大家聊一下如何修改用户信息。

2.修改用户登录信息

在 Spring Security 中,当用户登录成功之后,如果前端提供了修改用户信息的功能,在前端修改完用户信息之后,存储在 Spring Security 中的用户信息也要及时修改,以防止在后面其他的请求中获取到错误的用户信息,Spring Security 中用户信息要如何修改呢?

一起来看大屏幕:

好了,不知道小伙伴们有没有 GET 到呢?有问题欢迎留言讨论。

原文 

http://mp.weixin.qq.com/s?__biz=MzI1NDY0MTkzNQ==&mid=2247488050&idx=1&sn=3cea9d8eb13d7bda1407b111e5c8ee45

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Security 如何动态更新已登录用户信息?松哥来和大家捋一捋

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址