前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3-3. SpringBoot项目集成【用户身份认证】实战 【全流程篇】基于JWT+双重检查的登录+登出+拦截器

3-3. SpringBoot项目集成【用户身份认证】实战 【全流程篇】基于JWT+双重检查的登录+登出+拦截器

作者头像
天罡gg
修改2023-04-08 17:00:23
6480
修改2023-04-08 17:00:23
举报
文章被收录于专栏:天罡gg天罡gg

前言

书接上文 实战核心篇,我们已经把JWT的核心代码实现了! 文中不止是代码实现,更是使用到了设计原则,提升大家的内功心法。并且抛转引玉的实现了RSA和HMAC两种算法,还没看过的同学,建议先看上文。所以对于基于JWT的Token用户身份认证机制来说,剩下的就是与接口结合起来,服务端需要做三部分处理:

  • 登录接口生成JWT,返回给前端。
  • 其它接口校验JWT。如果每个接口在调用前都去调用一下校验Token,对接口的侵入性太强,这显然不是我们期望的。这时,我们可以使用拦截器对请求进行拦截实现。 另外,因为接口中还可能需要获取用户信息,所以我们还需要一个全局管理用户信息的地方,详见正文!
  • 登出接口,目的是能主动退出让JWT失效。 上文说过,JWT是无法主动失效的,所以就需要引入其它处理,详见正文!

本文对应的思维导图


专栏介绍

因为可能还有很多同学还不清楚上下文,所以简单介绍一下这个专栏要做的事:

天罡老哥和狗哥(博客主页)有意从0到1带大家搭建一个SpringBoot+SpringCloud+Vue的前后端分离项目! 打造一个短小精悍、技术主流、架构规范的前后端分离实战项目!我负责后端,狗哥负责前端! 目的就是让大家通过项目实战,学到一些真东西,将所学理论落地,助力有心强大的你更快的成长!开启你的工作之旅,让开发游刃有余!

详细的后端规划后端大纲思维导图在开篇已经给出,你可以到开篇查收:基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

本文目录


一、接口文档

本文中,我们主要实现两个接口:登录和登出,在开发之前,我们应提前与前端一起协商定义好接口文档。

在这里给出接口文档,另一个目的,也是让大家更了解我们即将要开发的接口。

1. 用户名+密码登录

简要描述
  • 输入用户名+密码,返回成功授权的token
请求URL
  • http://ip:port/auth/login
请求方式
  • POST
请求header
请求示例
代码语言:javascript
复制
{
    "userName":"张三",
    "password":"his password"
}
请求参数说明

参数名

必选

类型

说明

userName

string

用户名

password

string

密码,需要加密,约定使用MD5加密

返回示例
代码语言:javascript
复制
{
    "success": true,
    "code": "200",
    "message": "成功",
    "data": "464c406d9410332bbc7de5b76bb98b6f"
}
返回参数说明
  • 返回的data为调用其它API接口的header里传入的tgCsrfToken

2. 登出

简要描述
  • 清除当前登录用户的登录态,退出登录
请求URL
  • http://ip:port/auth/logout
请求方式
  • POST
请求header
  • tgCsrfToken:登录返回的data
返回示例
代码语言:javascript
复制
{
    "success": true,
    "code": "200",
    "message": "成功"
}

二、开发登录接口

详细内容,请见原文地址:

https://blog.csdn.net/scm_2008/article/details/129847148

六、测试

1. 测试登录接口

登录接口是不会被拦截的,也就是在控制台 不会打印 AuthInterceptor.preHandle 等信息,如下图只有token开始时间:

  • 正常情况
  • 用户名或密码错误

2. 测试/book接口

  • 未正确传header
  • 正确传header

3. 测试登出接口

我就不展示细节了,当登出后,你如果不重新登录,请求接口是会返回401或400的。


七、Git 提交


最后

到这,一套基于JWT的Token身份认证机制就实现了,它足可以满足我们当前的需求。后面我们在进行微服务实战时,再视情况对其进行改进,敬请期待!

如果觉得写的不错,订阅起来吧,干货持续输出中!

服务端实战SpringBoot+Vue前后端分离项目实战

前端实战Vue + SpringBoot前后端分离项目实战

再次说明: 这个实战专栏是真实战,是真从0到1!用的也是最新最主流的技术。具体的优势、规划、技术选型都可以在《开篇》试读,有详细说明! 高质量专栏,一个专栏足可以让你具备工作实战能力,所以定位上很容易上让你甄别出来这是高质量的! 我们保证会用心持续高质量输出文章,订阅后加我微信,我会给你针对性指导

另外,别忘了关注天哥:天罡gg ,发布新文不容易错过: https://blog.csdn.net/scm_2008

老规矩,请投票给我反馈,谢谢大家的支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 专栏介绍
  • 一、接口文档
    • 1. 用户名+密码登录
      • 2. 登出
      • 二、开发登录接口
      • 六、测试
        • 1. 测试登录接口
          • 2. 测试/book接口
            • 3. 测试登出接口
            • 七、Git 提交
            • 最后
            相关产品与服务
            腾讯云服务器利旧
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档