SpringBoot3 + Vue3 学习 Day 2

学习视频

黑马程序员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

相关推荐

  1. <span style='color:red;'>day</span><span style='color:red;'>3</span> <span style='color:red;'>2</span>/20

    day3 2/20

    2024-07-21 15:02:01      56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 15:02:01       172 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 15:02:01       190 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 15:02:01       158 阅读
  4. Python语言-面向对象

    2024-07-21 15:02:01       171 阅读

热门阅读

  1. Try ubuntu core (by quqi99)

    2024-07-21 15:02:01       37 阅读
  2. 独孤思维:副业赚钱,易如反掌

    2024-07-21 15:02:01       35 阅读
  3. Composition API对比Options API

    2024-07-21 15:02:01       29 阅读
  4. C# 删除DataTable里符合条件的行

    2024-07-21 15:02:01       32 阅读
  5. centos7更换yum源

    2024-07-21 15:02:01       35 阅读
  6. c++应用网络编程之五Windows常用的网络IO模型

    2024-07-21 15:02:01       34 阅读
  7. opencv—常用函数学习_“干货“_12

    2024-07-21 15:02:01       36 阅读
  8. AI文章特点详细分析

    2024-07-21 15:02:01       36 阅读
  9. ubuntu24无法网络无法连接的问题

    2024-07-21 15:02:01       32 阅读