今日干货
刚刚发表查看: 66666 回复:666公众号后台回复 ssm,免费获取松哥纯手敲的 SSM 框架学习干货。
有好几位小伙伴小伙伴曾向松哥求助过这个问题。
一开始我觉得这可能是一个小概率 BUG,但是当问的人多了,我觉得这个问题对于新手来说还有一定的普遍性,有必要来写篇文章跟大家仔细聊一聊这个问题,防止小伙伴们掉坑。
视频看完了,如果小伙伴们觉得松哥的视频风格还能接受,也可以看看松哥自制的 Spring Boot + Vue 系列视频教程
以下是视频笔记。
1.问题复现
如果使用了 Spring Security,当我们登录成功后,可以通过如下方式获取到当前登录用户信息:
- SecurityContextHolder.getContext().getAuthentication()
- 在 Controller 的方法中,加入 Authentication 参数
这两种办法,都可以获取到当前登录用户信息。具体的操作办法,大家可以看看松哥之前发布的教程:Spring Security 如何动态更新已登录用户信息?。
正常情况下,我们通过如上两种方式的任意一种就可以获取到已经登录的用户信息。
异常情况,就是这两种方式中的任意一种,都返回 null。
都返回 null,意味着系统收到当前请求时并不知道你已经登录了(因为你没有在系统中留下任何有效信息),这会带来两个问题:
- 无法获取到当前登录用户信息。
- 当你发送任何请求,系统都会给你返回 401。
2.顺藤摸瓜
要弄明白这个问题,我们就得明白 Spring Security 中的用户信息到底是在哪里存的ÿ