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

相关推荐
程序员榴莲2 分钟前
网络编程入门 Python Socket 实现一个简单的用户认证系统
服务器·网络·python
ZStack开发者社区8 分钟前
全球化2.0 | ZStack亮相印尼云计算与数据中心大会 以新一代云底座助力数字印尼建设
服务器·云计算·gpu算力
DFT计算杂谈14 分钟前
VASP新手入门: IVDW 色散修正参数
linux·运维·服务器·python·算法
programhelp_25 分钟前
Google 2026 New Grad SDE VO 三轮面试详解 | 含Behavioral、Coding、Design
java·服务器·数据库
qq_3660327826 分钟前
Claude API中转怎么选?简易api下的国内接入与兼容 OpenAI 接口实践
大数据·运维·人工智能
Donk_6728 分钟前
HAProxy实验搭建
运维·负载均衡
樱桃花下的小猫31 分钟前
腐蚀Rust-服务器插件模组教程
服务器·新手友好·云鸢互联·零门槛一键开服·腐蚀rust
青梅橘子皮33 分钟前
Linux---开发工具(2)(makefile、进度条、git、gdb)
linux·运维·服务器
Ether IC Verifier1 小时前
TCP/IP协议握手原理详解——结合以太网连接过程
服务器·网络·数据库·网络协议·tcp/ip
剑神一笑1 小时前
Linux less 命令深度解析:从源码看分页器的设计智慧
linux·运维·less