SpringBoot3 + Vue3 学习 Day 2

news2024/11/26 16:46:38

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

  • 学习视频
  • 登入接口的开发
    • 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.coloradmin.cn/o/1938529.html

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

相关文章

JVM(day4)类加载机制

类加载过程 加载 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。 验证 文件格式验证 元数…

LeetCode做题记录(第二天)647. 回文子串

题目: 647. 回文子串 标签:双指针 字符串 动态规划 题目信息: 思路一:暴力实现 我们直接for套for分割成一个个子串再判断,如果子串是回文子串,就1,最后得出结果 代码实现: cl…

C语言实例-约瑟夫生者死者小游戏

问题: 30个人在一条船上,超载,需要15人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从1开始,数到9的人下船,如此循环,直到船上仅剩15人为止,问都有哪些编号…

Missing script:‘dev‘

场景: npm run dev 原因:没有安装依赖,可用镜像安装(详见下图ReadMe 蓝色字体),没安装依赖可从package-lock.json文件是否存在看出,存在则有依赖 解决:

KMP算法(算法篇)

算法之KMP算法 KMP算法 概念: KMP算法是用于解决字符串匹配的问题的算法,也就是有一个文本串和一个模式串,求解这个模式串是否在文本串中出现或者匹配。相对于暴力求解,KMP算法使用了前缀表来进行匹配,充分利用了之…

【Vue3】从零开始编写项目

【Vue3】从零开始编写项目 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的…

神经网络模型实现(训练、测试)

目录 一、神经网络骨架:二、卷积操作:三、卷积层:四、池化层:五、激活函数(以ReLU为例):六、模型搭建:七、损失函数、梯度下降:八、模型保存与加载:九、模型训…

Linux下安装JDK、Tomact、MySQL以及Nginx的超详细步骤

目录 1、为什么安装这些软件 2、安装软件的方式 3、安装JDK 3.1 下载Linux版本的JDK 3.2 将压缩包拖拽到Linux系统下 3.3 解压jdk文件 3.4 修改文件夹名字 3.5 配置环境变量 4、安装Tomcat 4.1 下载Tomcat 4.2 将Tomcat放入Linux系统并解压,步骤如上面的…

MenuToolButton自绘控件,带下拉框的QToolButton,附源码

MenuToolButton自绘控件,带下拉框的QToolButton 效果 下拉样式可自定义 跟随QToolButton的Qt::ToolButtonStyle属性改变图标文字样式 使用示例 正常UI文件创建QToolButton然后提升,或者直接代码创建都可以。 // 创建一个 QList 对象来存储 QPixm…

JDK、JRE、JVM的区别java的基本数据类型

说一说JDK、JRE、JVM的区别在哪? JDK: Java Delopment kit是java工具包,包含了编译器javac,调试器(jdb)以及其他用于开发和调试java程序的工具。JDK是开发人员在开发java应用程序时候所需要的的基本工具。…

10道JVM经典面试题

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

【高中数学/对数函数】log_x_x+1与(x+1)/x,log_x+1_x与x/(x+1)的图线有着惊人的相似性

【图像】 褐线与蓝线&#xff0c;黄线与绿线&#xff0c;只是像左右平移了一样。 【生成图像的代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head>…

大模型学习笔记十二:AI产品部署

文章目录 一、如何选择GPU和云服务器厂商&#xff0c;追求最高性价比1&#xff09;根据场景选择GPU2&#xff09;训练或微调所需显卡&#xff08;以Falcon为例子&#xff09;3&#xff09;服务器价格计算器 二、全球大模型了解1&#xff09;llm所有模型2&#xff09;模型综合排…

基于Python+Django,开发的一个在线教育系统

一、项目简介 使用Python的web框架Django进行开发的一个在线教育系统&#xff01; 二、所需要的环境与组件 Python3.6 Django1.11.7 Pymysql Mysql pure_pagination DjangoUeditor captcha xadmin crispy_forms 三、安装 1. 下载项目后进入项目目录cd Online-educ…

企业微信PC版应用跳转到默认浏览器,避坑指南,欢迎补充(Vue项目版)。。。

引子 关于企业微信PC版应用跳转到默认浏览器&#xff0c;我之前写过一篇文章&#xff1a;企业微信PC版应用跳转到默认浏览器&#xff0c;避坑指南&#xff0c;欢迎补充。。。 以前的文章里用的前后端一体的Jsp项目&#xff0c;这次我使用的是前后端分离的Vue项目&#xff0c;…

数据库——单表查询

一、建立数据库mydb8_worker mysql> use mydb8_worker; 二、建立表 1.创建表 mysql> create table t_worker(department_id int(11) not null comment 部门号,-> worder_id int(11) primary key not null comment 职工号,-> worker_date date not null comment…

Git安装教程 | Git配置教程 | Github

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;本片教程是分享的Git教程的第1️⃣期&#xff1a;Git的安装与配置✈️ 文章目录 1.前言&#x1f347;2.Git下载&#x1f34e;3.Git 的安装&#x1f95d…

Python数据风险案例54——人工智能热门概念股爬虫分析其价值(三因子模型)

案例背景 人工智能概念如火如荼的夏天&#xff0c;在这个2024年&#xff0c;我觉得需要提早布局一下这个概念。所以我们找一下A股里面人们的人工智能概念股&#xff0c;然后分析他们的数据应用三因子模型&#xff0c;也就是最经典的资本资产定价模型的衍生版去研究他们各自的投…

内网穿透原理解析及软件

&#x1f308;所属专栏&#xff1a;【其它】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点…

OpenGL笔记十四之GLM数学库的配置与使用

OpenGL笔记十四之GLM数学库的配置与使用 —— 2024-07-20 中午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十四之GLM数学库的配置与使用1.旋转变换运行效果2.平移变换运行效果3.缩放变换运行效果4.复合变换&#xff1a;先旋转 再平移运行效果5.复合…