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

相关推荐
piepis5 分钟前
Linux 下升级 Python 3.7 → 3.9(离线)并内网安装本地python-packages
linux·运维·python
SP八岐大兔7 分钟前
Ollama安装及运行模型
linux·服务器·ollama
深念Y8 分钟前
Nginx和Spring Cloud Gateway
运维·服务器·网络·网关·nginx·spring cloud·微服务
困惑阿三9 分钟前
全栈部署排雷手册:从 405 报错到飞书推送成功
服务器·前端·后端·nginx·阿里云·node.js·飞书
Elastic 中国社区官方博客15 分钟前
测试 Elasticsearch,现在变得更简单了
大数据·运维·elasticsearch·搜索引擎·全文检索
野犬寒鸦15 分钟前
从零起步学习JVM|| 第二章:JVM基本组成及JVM内存区域详解
服务器·开发语言·后端·学习·面试·职场和发展
vx-bot55566619 分钟前
企业微信ipad协议的防封号技术体系与策略实践
服务器·企业微信·ipad
木子欢儿20 分钟前
在 Debian 12 上安装多个版本的 php(7.3、7.4、8.1、8.2)
运维·开发语言·debian·php
DJ斯特拉23 分钟前
Docker基本使用
运维·docker·容器
菩提树下的凡夫27 分钟前
基于C++语言的Onnx CUDA加速部署推理
linux·运维·人工智能