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…

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

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

Mybatis plus自定义分页

引言 在众多现代Web应用中,数据分页是一项基础且关键的功能,它不仅可以显著提升用户体验,还能有效减少服务器的负载。传统的分页方法通常在数据库层面进行,通过SQL查询直接返回分页结果。这种方法在大多数情况下都非常高效。然而…

大语言模型-文本检索任务基准 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网站模板。 …

解决前端开发中的浏览器兼容性问题

在前端开发中,浏览器兼容性问题是一个常见且挑战性的课题。不同的浏览器对HTML、CSS和JavaScript的解析和支持程度各有不同,这可能导致网站或应用在不同浏览器上展现出不一致的效果,甚至功能上的错误。本文将讨论如何识别和解决这些浏览器兼容…

1.关于linux的命令

1.关于文件安装的问题 镜像站点服务器:cat /etc/apt/sources.list 索引文件:cd /var/lib/apt/lists 下载文件包存在的路径:cd /etc/cache/apt/archives/2.关于dpkg文件安装管理器的应用: 安装文件:sudo dpkg -i 文件名; 查找文件目录:sudo …

【Linux】vim编辑器使用详解

目录 一、vim编辑器简介二、 vim编辑器使用指南1.基本操作1.进入与退出2.模式切换 2.命令模式1.移动光标2.选择文本(可视模式)3.删除文字4.复制粘贴5.替换6.撤销 3.底行模式1.列出每行的行号2.跳转到某行3.查找字符4.保存文件5.退出vim 三、vim总结 一、…

oracle 11G long类型如何转换 CLOB

oracle 11G long类型如何转换 CLOB oracle 11G long类型如何转换 CLOBStep 1: 创建示例表并插入数据Step 2: 创建一个临时 CLOB 列,并将 LONG 数据复制到 CLOB 列.Step 3: 创建一个新表,将 CLOB 数据转换为 VARCHAR2(假设数据长度允许&#x…

Perl中的设计模式革新:命令模式的实现与应用

Perl中的设计模式革新:命令模式的实现与应用 在面向对象编程中,设计模式是解决特定问题的成熟模板。命令模式作为行为设计模式之一,它将请求封装为对象,从而允许用户根据不同的请求对客户进行参数化。本文将深入探讨如何在Perl中…

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)…

JVM 在什么情况下会触发垃圾回收?

垃圾回收在JVM中自动进行,通常在以下几种情况下触发: 1. 年轻代满了(Young Generation Full) 当年轻代的Eden区满了时,会触发Minor GC(也称为Young GC)。这是因为新创建的对象首先分配在Eden区…