大事件Day02

怎么根据用户名查询用户,这里我们用到JWT令牌,当我们在登录创建一个登录令牌,我们在有效载荷中加入了

所以当我们在此根据用户名查询用户,我们就可以从请求中获得JWT令牌@RequestHeader(name="Authorization") String token ) 获得JWT令牌,因为我们JWT工具类中加入了解析JWT令牌,所以我们可以解析从而获得用户名

但是当我们进行了请求的访问时

发现,返回了密码,密码是不应该让被人知道的哪怕是加密

所以我们需要用到一个注解,因为我们返回的User类型,所以我们可以找到User这个具体类,在这个具体的属性名上加上

看这个名字就知道了,就是把当前对象转换成json字符串的时候,忽略password,最终json字符串就没有password这个属性

加上JsonIgnore发现已经没有了password,但是我们发现了更一个问题

在数据库中我们发现

像create_time 和update_time这些东西是有值的但是我们返回的时候发现是null,这是为啥,因为我们在数据库中的属性名是create_time,但是在User类中就是createTime,这俩不一样,因为我还没有开启驼峰命名法

在yml文件,我需要开启驼峰命名法

那么接下来问题又来了

我们每次获取用户详细信息,我们都要从请求头中,获取JWT令牌,有点麻烦,怎么优化

就是ThreadLocal

提供线程局部变量

用来存取数据

使用ThreadLocal存储的数据,线程安全

如果当两个用户同时进行访问的时候,会不会出现了 我们去id取成别人的,答案是不会的,每个用户的线程都会被系统分开,并且把对应的方法加载入栈

接下来如何实现

我们先写一个线程类,因为每次访问请求的失手,如果通过JWT令牌校验,我们就把令牌的有效载荷,存入的到线程中

那么当我们再次取得时候就会得到了

那么我们不要忘了移除线程得内容,因为它是全局变量,我们每次请求如果不把内容情况,就容易爆栈,那么什么时候,就是我们对每次请求响应结束后

那么接下来就是更改用户信息的实现

因为我们需要接收JSON格式的数据,我们就需要用@RequestBody这样的注释把JSON格式数据封装到属性里面,剩下的实现都是基本语法,对了还要再Service层里面确定

每次修改的时候,我们是不是应该也要规定比如

要加入@Validate

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog1 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
琥珀色糖1 天前
SimlpeHttp
linux·服务器
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
第十人i1 天前
Linux 日志管理系统:journald 配置与优化
linux·服务器
布裘1 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境