自定义拦截器jwt登录校验接口模拟账号登录

news2024/12/23 20:45:41

五一闲在宿舍,本来想写一个自己的简易博客网站,发现vue基础太差,做不出来页面效果于是便放弃,但也没有完全放弃。于是我分析了一下简易博客的后端实现流程,除了最基本的crud以外,在自己目前的对接口的分析中感觉比较复杂的便是登录校验这一块,于是便用apifox 进行接口测试,模拟实现一个登录校验接口

接口分析

我们在发送一个登录请求到后端之后,首先会经过拦截器,拦截器拦截到这次登录请求,于是就会创建一个token返回给前端,在接下来的每次请求后面都会携带这个token进行请求。

假设 我们token返回给前端之后,前端进行校验成功,然后切换到登录之后的页面。切换到登录之后的页面之后,你的每一次请求都会携带后端创建的token进行校验之后,再进行数据的查询显示等操作

准备工作

1.依赖的引入

我们引入 jwt 依赖  lombok 依赖 以及其他常用的依赖

这里在我的pom文件中 因为只有一个demo  并没有多个demo,所以并没有用maven的继承聚合分模块管理等,而是直接进行依赖的引入

2.配置 jwt 的yml文件 以及对应的实体类

3.为了使用方便  我们提前设置好 jwt令牌创建与解析的工具类

我们先分析一下创建jwt的方法的传入参数    第一个map集合,我们一般传入的是   登录人员的id,因为到后面由登录id 创建的jwt令牌,到最后解析的时候解析出来的也是这个我们传入的登陆人员的id ,第二个参数 是自己设置的签名密匙,第三个是设置的jwt过期时间单位是毫秒

解析jwt参数 传入的是创建的token和签名密匙

4.配置拦截器

首先 我们配置一个configuration类实现  WebMvcConfigurer 接口 ,重写addInterceptors方法

,然后再写一个拦截器类 实现

 HandlerInterceptor 接口  重写  preHandle  方法。

在这里我们产生一个思考   filter 接口这么好用 只需要 实现一个filter接口 然后 加上@webfilter注解

指定过滤的路径就行了,为什么要用拦截器  

我觉得主要是   拦截器可以进行更好的封装 ,过滤器能做的拦截器都能做 而且过滤器主要负责处理与请求相关的预处理和后处理工作,拦截器主要进行业务操作

过滤器需要在servlet容器中实现,拦截器可以适用于javaEE,javaSE等各种环境

拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑 

综上所述一般就用拦截器,但是两者的选择还是主要看业务场景 

登录接口书写

该接口是一个简易的实现,他的返回值调用值其实并不规范    

在此  我们并没有使用 autowired注解,而是使用lombok的@requireargconstructor注解,基于构造方法注入 bean

拦截器的配置

在这里我为了省力还是用了 autowired 注解,虽然没啥事,但是这并不是springboot现在建议使用的注解 。

当时写完之后 我在想,如果由坏蛋拿到了我的请求 直接用postman或者apifox进行接口请求攻击我怎么办,但是仔细思考了一下发现他们这样并行不通,首先 第一次  他的请求 是/userlogin请求,发现是第一次登录,系统就会校验他的用户名密码,在sql的编写中  用#占位符防止SQL注入。

我又想 如果他拿到token,拿到我的请求网址用postman测试我的接口,但是他涉及的操作也就是登录之后我给予的权限操作,这样貌似并没有什么问题,关于这点  ,我对网络攻击也不太懂,就不去深究了。

这样 我们就写好了一个自定义接口  

接下来进行测试

首先在paifox中进行一系列的设置

接下来启动服务  ,发送请求

 测试通过  

在写的时候想到 由于现在经验并不足,可能这里面会有一些小bug ,如果有,还希望大佬指正

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

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

相关文章

MATLAB 微积分

MATLAB 微积分 MATLAB提供了多种方法来解决微分和积分问题,求解任意程度的微分方程式以及计算极限。最重要的是,您可以轻松求解复杂函数的图,并通过求解原始函数及其导数来检查图上的最大值,最小值和其他文具点。 本章将讨论微…

Linux专栏08:Linux基本指令之压缩解压缩指令

博客主页:Duck Bro 博客主页系列专栏:Linux专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Linux基本指令之压缩解压缩指令 编号:08 文章目录 Linu…

在2-3-4树上实现连接与分裂操作的算法与实现

在2-3-4树上实现连接与分裂操作的算法与实现 引言1. 维护2-3-4树结点的高度属性伪代码示例 2. 实现连接操作伪代码示例 3. 证明简单路径p的划分性质4. 实现分裂操作伪代码示例 C代码示例结论 引言 2-3-4树是一种平衡搜索树,它保证了树的高度被有效控制,…

python实验一 简单的递归应用

实验一 实验题目 1、兔子繁殖问题(Fibonacci’s Rabbits)。一对兔子从出生后第三个月开始,每月生一对小兔子。小兔子到第三个月又开始生下一代小兔子。假若兔子只生不死,一月份抱来一对刚出生的小兔子,问一年中每个月各有多少只兔子。 &…

uniapp 应用闪退、崩溃异常日志捕获插件(可对接网络上报)插件 Ba-Crash

应用闪退、崩溃异常日志捕获插件(可对接网络上报) Ba-Crash 简介(下载地址) Ba-Crash 是一款uniapp应用闪退、崩溃异常日志捕获插件,支持对接网络上报、设置提示等等,方便对一些远程问题、原生问题进行分…

【云原生】Docker 实践(五):搭建私有镜像 Harbor

【Docker 实践】系列共包含以下几篇文章: Docker 实践(一):在 Docker 中部署第一个应用Docker 实践(二):什么是 Docker 的镜像Docker 实践(三):使用 Dockerf…

基于node.js+css+html+mysql博客系统

博主介绍: 大家好,本人精通Java、Python、Php、C#、C、C编程语言,同时也熟练掌握微信小程序、Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

C#描述-计算机视觉OpenCV(4):图像分割

C#描述-计算机视觉OpenCV(4):图像分割 前言用 GrabCut 算法分割图像实例展示 前言 本文中如果有什么没说明的地方,大概率在前文中描述过了。 C#描述-计算机视觉OpenCV(1):基础操作 C#描述-计算…

第十五届蓝桥杯省赛大学B组(c++)

很幸运拿了辽宁赛区的省一,进入6月1号的国赛啦... 这篇文章主要对第十五届省赛大学B组(C)进行一次完整的复盘,这次省赛2道填空题6道编程题: A.握手问题 把握手情景看成矩阵: 粉色部分是7个不能互相捂手的情况 由于每个人只能和其他人捂手, 所以黑色情况是不算的 1和2握手2和…

快速掌握Element-Ul,构建高效网页应用【AI写作】

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

JavaScript继承的方法和优缺点

原型链继承 让一个构造函数的原型是另一个类型的实例,那么这个构造函数new出来的实例就具有该实例的属性。 优点: 写法方便简洁,容易理解。 缺点: 在父类型构造函数中定义的引用类型值的实例属性,会在子类型原型上…

逻辑回归实战 -- 是否通过考试

http://链接: https://pan.baidu.com/s/1-uy-69rkc4WjMpPj6iRDDw 提取码: e69y 复制这段内容后打开百度网盘手机App,操作更方便哦 数据集下载链接 这是个二分类问题,通过x1,x2两个指标得出是否通过考试的结论。 逻辑回归的激活函数是sigmoid函数&…

STM32单片机实战开发笔记-EXIT外部中断检测

嵌入式单片机开发实战例程合集: 链接:https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码:28ab EXIT模块测试 功能描述 外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置输入类型&a…

P9422 [蓝桥杯 2023 国 B] 合并数列

P9422 [蓝桥杯 2023 国 B] 合并数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 用队列即可 当两个队列队首&#xff1a;a b &#xff0c;弹出 当a < b&#xff0c;把a加给其后一个元素&#xff0c;弹出a 当b < a&#xff0c;把b加给其后一个元素&#xff0c;弹出…

Eclipse 开创性地集成 Neon Stack,将 EVM 兼容性带到 SVM 网络

2024年5月2日&#xff0c;全球——在塑造区块链网络的战略联盟的过程中&#xff0c;Eclipse 通过集成 Neon EVM 核心团队开发的技术堆栈 Neon Stack&#xff0c;成为首个打破 EVM-SVM 兼容性障碍的生态。 Eclipse 旨在通过结合以太坊和 Solana 的最佳特性&#xff0c;来重构区…

2024年钉钉群直播回放如何永久保存

工具我已经打包好了&#xff0c;有需要的自己取一下 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家准备好的压缩包 2.再把逍遥一仙下载器压缩包也解压一下 3.打开逍遥一仙下载器文件夹里面的M3U8…

华为云耀云服务器开放端口

博客主页&#xff1a;花果山~程序猿-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一.华为云控制台开放端口 寻找到安全组信息 2. 添加开放的端口信息 3. 检查是否成…

常用AI工具分享 + IDEA内使用通义灵码

引言 随着人工智能技术的飞速发展&#xff0c;AI工具已经渗透到我们日常生活和工作的各个领域&#xff0c;带来了前所未有的便利。现在我将分享一下常用的AI工具&#xff0c;以及介绍如何在IDEA中使用通义灵码。 常用AI工具 1. 通义灵码 (TONGYI Lingma) - 由阿里云开发的智能…

STM32的TIM输入捕获和PWMI详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. IC输入捕获 2. 频率测量 3. 主模式、从模式、触发源选择 4. 输入捕获基本结构 5. PWMI模式 6. 代码示例 6.1 PWM.c 6.2 PWM.h 6.3 IC.c 6.4 IC.h 6.5 完整工程文件 输出比较可以看下面这篇…

Covalent Network(CQT)为 Arbitrum 生态提供 250 万美元的资助,以促进 Web3 的创新与发展

Covalent Network&#xff08;CQT&#xff09;作为 Web3 领先的“数据可用性”层&#xff0c;宣布将提供 250 万美元的资金以支持 Arbitrum 生态项目&#xff0c;包括 Arbitrum One、Nova、Orbit 或 Stylus。此举旨在通过提供资源和帮助&#xff0c;推动利用 Arbitrum 网络上 C…