SpringBoot3 + Vue3 学习 Day 2

登入接口 和 获取用户详细信息的开发

  • 学习视频
  • 登入接口的开发
    • 1、登入主逻辑
    • 2、登入认证
      • jwt 介绍
      • 生成 JWT
        • ① 导入依赖
        • ② 编写代码
        • ③ 验证JWT
      • 登入认证接口的实现
        • ① 导入 工具类
        • ② controller 类实现
        • ③ 存在的问题及优化
        • ① 编写拦截器
        • ② 注册拦截器
        • ③ 其他接口直接提供服务
  • 获取用户详细信息
        • ① 请求表头,获取 token,从token 里获取用户名。然后根据用户名查找user
        • ② 存在问题
        • ③ 解决密码问题
        • ④ 解决 createTime 问题
        • ⑤ 优化思路
          • ThreadLocal
          • 设计思路
        • ⑥ 导入 ThreadLocalUtil 工具类
        • ⑦ 在拦截器里set token,并在使用完后清除资源。
        • ⑧ 在 controller 类中get token

学习视频

黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关

登入接口的开发

1、登入主逻辑

image-20240719110157181

2、登入认证

登入逻辑:在 /login 节目登入成功后,才能访问 /list 或/user 等界面。不能直接访问 /list 或/user 等界面。

例如编写 ArticleController 代码

image-20240719111002461

然后打开浏览器 访问 localhost:8080/article/list 会发现能直接访问成功

image-20240719111058448

所以需要登入认证,这就需要借助令牌

jwt 介绍

image-20240719133947995

生成 JWT

① 导入依赖

image-20240719140513804

② 编写代码

image-20240719140643453

③ 验证JWT

image-20240719141907568

image-20240719141918606

登入认证接口的实现

image-20240719153432278

① 导入 工具类

image-20240719150819072

② controller 类实现

登入时生成token,并返回 token (UserController 类里实现)

image-20240719151023119

其他接口(如ArticleController)则需要验证token 才能正常使用(提供服务)

浏览器访问其他接口时会携带token。查看接口文档说明,看看token在哪

image-20240719152216272

image-20240719153145807

这样,用户就只有在登入(或携带token)的情况下,才能访问 localhost:8080/article/list 了。

③ 存在的问题及优化

项目里会有很多很多的controller 类很多的接口,难道每个类在提供服务前都要先获取 token,再验证?这太麻烦了。

所以可以设置一个拦截器,在拦截器里面统一完成验证,验证后才能访问各接口

image-20240719160734469

① 编写拦截器

image-20240719160417506

② 注册拦截器

image-20240719160514099

③ 其他接口直接提供服务

image-20240719160654812

获取用户详细信息

① 请求表头,获取 token,从token 里获取用户名。然后根据用户名查找user

image-20240720105537147

② 存在问题

image-20240720105750538

③ 解决密码问题

在 User 实体类的 password 变量上添加 @JsonIgnore

image-20240720110528766

④ 解决 createTime 问题

问题原因:数据库中的命名和实体类的命名不一致。mybatis 识别不了

image-20240720110934416

解决方案:在yml 文件中配置

image-20240720111156874

⑤ 优化思路

访问 /userInfo 接口前,会访问拦截器。通过了拦截器才能提供服务,问题是在拦截器中已经写过了获取 token,解析token 的代码。能不能复用拦截器里的获取解析token 的代码呢 ?

ThreadLocal

image-20240720112138846

注意:用完记得调用 remove 方法释放

image-20240720113205854

设计思路

每个用户登入时都会分配一个线程,用ThreadLocal set 和 get 可以保证个获取各的,隔离

image-20240720122854942

⑥ 导入 ThreadLocalUtil 工具类

image-20240720124222498

⑦ 在拦截器里set token,并在使用完后清除资源。

image-20240720124142591

⑧ 在 controller 类中get token

image-20240720124353511

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…

Webstorm-恢复默认UI布局

背景 在使用Webstorm的时候,有时候进行个性化设置,如字体、界面布局等. 但是设置后的效果不理想,想要重新设置回原来的模样,却找不到设置项. 这里提供一种解决方案,恢复默认设置,即恢复到最初刚下载好后的设置. 操作步骤 步骤一:打开setting 步骤二:搜索Restore Default,找到…

数学建模-----SPSS参数检验和非参数检验

目录 1.参数检验 1.1独立样本t检验案例分析 1.1.1查看数据编号 1.1.2确定变量所属类型 1.1.3选项里面的置信区间 1.1.4对于结果进行分析 1.2配对样本t检验案例分析 1.2.1相关设置 1.2.2分析结果 2.非参数检验 2.1对比分析 2.2非参数检验的方法 2.3案例分析 2.3.1相…

10道JVM经典面试题

1、 JVM中,new出来的对象是在哪个区? 2、 说说类加载有哪些步骤? 3、 JMM是什么? 4、 说说JVM内存结构? 5、 MinorGC和FullGC有什么区别? 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出&#xff1f…

当“广撒网”遇上“精准定点”的鱼叉式网络钓鱼

批量网络钓鱼电子邮件活动倾向于针对大量受众,它们通常使用笼统的措辞和简单的格式,其中不乏各种拼写错误。而有针对性的攻击往往需要付出更大的努力,攻击者会伪装成雇主或客户向目标发送包含个人详细信息的个性化消息。在更大范围内采用这种…

大语言模型-文本检索任务基准 BEIR

BEIR (A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models) 文本检索任务的基准,使用18 个数据集为检索系统的零样本评估提出了一个标准化基准, BEIR 基准上在9个不同领域的检索任务评估 10 种不同的检索方法。 九个…

义务外贸wordpress独立站主题

健身器材wordpress网站模板 跑步机、椭圆机、划船机、动感单车、健身车、深蹲架、龙门架、健身器材wordpress网站模板。 https://www.jianzhanpress.com/?p4251 农业机械wordpress网站模板 植保机械、畜牧养殖机械、农机配件、土壤耕整机械、农业机械wordpress网站模板。 …

2.1.卷积层

卷积 ​ 用MLP处理图片的问题:假设一张图片有12M像素,那么RGB图片就有36M元素,使用大小为100的单隐藏层,模型有3.6B元素,这个数量非常大。 识别模式的两个原则: 平移不变性(translation inva…

K8S 部署jaeger-operator,与其演示项目hotrod

最近在研究observabilty在K8S环境的onboard,查阅了一些资料,发现现在网上Prometheus/Metrics相关的资源,是比较全面的,而Trace相关的部分不是很全面,所以写下这篇博文,以做备忘和分享。 组件介绍 我这里选…

Excel的操作

Excel的操作 一、Excel的作用 Excel是一款功能强大的电子表格软件,主要用于数据处理和分析。 二、Excel的基础操作 新建文档 一般情况下,就在桌面空白处,点击鼠标右键,即可新建 三、页面布局 1、快速访问工具栏 主要包含&am…

为 android编译 luajit库、 交叉编译

时间:20200719 本机环境:iMac2017 macOS11.4 参考: 官方的文档:Use the NDK with other build systems 写在前边:交叉编译跟普通编译类似,无非是利用特殊的编译器、链接器生成动态或静态库; make 本质上是按照 Make…

ssm 学习 ---(spring)

一、spring框架 1、基本框架 2、Beanfactory快速入门 配置清单:xml文件 (1) 导入jar包或者maven坐标 (2) 定义UserService接口以及UserService实现类 (3) 创建bean.xml配置文件,将UserService信息配置到该xml文件中; (4)编写测试代码,创…

ubuntu lxqt触摸屏旋转校准(usb触摸屏、lxqt、ubuntu23.10)

参考文章:https://www.codetd.com/article/5651388 1.查看触摸屏驱动 rootxyy:~# xinput list ⎡ Virtual core pointer id2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id4 [slave pointer (2)…

如何根据同一行的ID利用R语言对值进行求和

需求:将属于同一分组的对应的值进行求和或者求平均值 #设置工作目录 > getwd() [1] "C:/Users/86150/Documents" > setwd("C:/Users/86150/Desktop/AA2024/RUF") > list.files() #读取文件 >install.packages("readxl")…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

在 CI/CD Pipeline 中实施持续测试的最佳实践!

随着软件开发周期的不断加快,持续集成(CI)和持续交付/部署(CD)已经成为现代软件开发的重要组成部分。在这一过程中,持续测试的实施对于确保代码质量、提高发布效率至关重要。本文将详细介绍在CI/CD流水线中…

JVM:JavaAgent技术

文章目录 一、Java工具的介绍二、Java Agent技术1、介绍2、静态加载模式3、动态加载模式 三、搭建java agent静态加载模式环境1、创建maven项目2、编写类和premain方法3、编写MANIFEST.MF文件4、使用maven-assembly-plugin进行打包5、创建Spring Boot应用 一、Java工具的介绍 …

mac数据恢复软件哪个好用 macbook数据恢复专业软件下载 mac数据恢复概率大吗 苹果电脑数据恢复软件哪个好

作为办公的必需品,mac的普及率虽然比不上其他品牌的windows操作系统,但是使用人群也一致居高不下,因此,mac数据丢失的问题也时常发生。当数据丢失以后,如何找回数据成了一大难题。 一、Mac数据恢复概率大吗 一般情况下…

配置mysql8.0.21版本docker-compose启动容器

1. 总览 2 docker-compose.xml配置 version: 3 services:mysql:image: 192.168.188.131:8000/mysqlrestart: alwaysvolumes:- ./data:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnf- ./mysql-files:/var/lib/mysql-files- ./log/mysql:/var/log/mysqlenvironment:MYSQL_ROOT_PA…

huawei USG6001v1学习----NAT和智能选路

目录 1.NAT的分类 2.智能选路 1.就近选路 2.策略路由 3.智能选路 NAT:(Network Address Translation,网络地址转换) 指网络地址转换,1994年提出的。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局…