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

相关推荐
leisoo80976 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
爱喝水的鱼丶7 小时前
SAP-ABAP:接口与报表场景专项优化:RFC/ODATA 接口、ALV 报表的性能提升方案
运维·性能优化·接口·sap·abap·rfc·经验交流
码上上班7 小时前
tengine知识点
linux·服务器·centos
画中有画7 小时前
自动化脚本开发最佳实践
运维·自动化
雾时之林10 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库
江南风月10 小时前
如何使用WGCLOUD实现智能运维
运维·zabbix·运维开发·prometheus
xiaoxiangsiyan10 小时前
HCIA 网络技术基础核心模块详解
运维·网络·网络协议·tcp/ip·运维开发·网络基础
MuMuMu122312 小时前
工业园区 VOCs 绿岛集中治理:越华环保集团项目技术方案与工程实践
大数据·运维
sxstj13 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
国际云,接待13 小时前
Nginx 后面接负载均衡,502/504 到底该先查哪里?
运维·nginx·负载均衡