大事件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

相关推荐
i建模32 分钟前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
chatexcel1 小时前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
kida_yuan2 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
何中应4 小时前
vmware的linux虚拟机如何设置以命令行方式启动
linux·运维·服务器
野犬寒鸦4 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
江畔何人初4 小时前
kubernet与docker的关系
linux·运维·云原生
bubuly4 小时前
软件开发全流程注意事项:从需求到运维的全方位指南
大数据·运维·数据库
百炼成神 LV@菜哥4 小时前
Kylin Linux V10 aarch64 安装启动 TigerVNC-Server
linux·服务器·kylin
m0_737302584 小时前
百度智能云边缘云服务器,端云协同赋能全域智能场景
服务器
Anastasiozzzz5 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端