【Java项目-企悦抽】11-用户与认证模块-实现用户登录03(结束登录功能)-完成测试+对接前端+登录拦截器

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

🎯 你正在阅读「Java项目-企悦抽」系列文章 🎯

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

🔥 弹简特 个人主页

❄️ 个人专栏直通车:

✨ 靠热爱去书写自己,靠勇敢去书写生活!

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨


🌟 博主简介:


文章目录:


一、前言

兄弟们,上一期咱们把登录模块核心功能做完了,账号密码、验证码登录还有鉴权逻辑全部通了。但登录模块还差两块内容:和前端的对接方案,以及后端全局登录拦截器。只有写好拦截器,后端才会自动校验访问接口的用户是否登录。

二、两种登录方式的测试

1、测试密码登录-使用Postman

后端日志

2、测试验证码登录-使用Postman

2.1 先获取验证码

这里需要注意,这个手机号是个假的,我们的验证码平台,发送不了验证码,但是我们会把它存在redis中,有时间内,我们尽快的把这个验证码给查询出来复制给前端传到后端去验证。

2.2 再根据验证码输入我们的登录信息


3、测试反例


三、前端登录的实现

对于前端的话,我只用截图做一些解释。

先从后端获取验证码

测试一下

我们先来测试密码登录的效果

登录成功,就来到了首页

那么接下来就测试验证码登录

手机获取验证码失败了,因为你传递的手机号是空的。

然后这大概率就是我们的参数不对应,修改一下就行

重新验证:

登录成功来到首页:

四、登录拦截器

回顾一下我们之前的登录方式JWT登录。

我们现在只是将前两部分完成的,就是登录成功,然后后端返回jwt。

但是由于你没有让后续的所有请求都自动带上这个jwt,后端就没有一个验证的标准。

也就是说我明明给你发了一个身份证,但是你没有带上身份证去做其他的事情,我就不知道这个人是你。

虽然我们已经完成了登录,但是你访问其他页面,如果你管理员把首页的地址发给其他人,其他人还是能够访问这个页面。而且能够获得的数据,理应来说,我们这个是管理员的权限,不应该让普通用户也能够访问,那此时解决办法就是:你每个人访问的时候都要把身份证带上,我看这个身份证是不是你当前登录的那个人。

也就是说我们后续的每一个请求都把这个鉴权码jwt令牌(token)带上,带上之后,我们给后端安一个保安,这个保安就是拦截器,然后他的职责就是把你给拦住。然后要查你的身份证,如果你的身份证是我发给你的,且是当前用户登录的那个人,我就允许你通过,否则的话我就要你跳到登录页面去,先给我去登,再者拦截器里面我们还可以告诉他哪些请求需要放行,哪些请求需要拦截。

接下来我们就完成这个拦截器,我们的思路很简单,加一个拦截器,拦截非登录页面,对它进行身份校验,看你的令牌里面也没有登录信息,如果有的话就放行,如果没有就拦截,返回401。此时前端看到这个401就会给你跳转到登录页面。

拦截器里面有很多的方法,这些方法是谁定义的?是我们的框架定义的,所以首先得实现一个handlerinterceptor接口,我们再去实现它接口里面的需要的方法。

实现拦截就有两个步骤,第1个是先定义保安,第2个是注册保安

具体可以参考博客:拦截器

定义保安:告诉保安,你这个保安可以干什么?

后端拦截你,然后要看身份证,身份证就是jwt令牌,jwt令牌就是token,jwt令牌存在请求头中,所以第1步先获取请求头。

第2步去解析我们的token(JWT令牌)

接下来就是注册保安:你找到保安之后签合同让他上岗,比如一个保安和学校合作,那这个学校好比就是我们当前的抽奖系统。给他签合同,让他上岗,并告诉他你需要拦截哪些东西,不需要拦截哪些东西。好比就是你学校找到保安了,然后签合同,并告诉保安你站在门口拦截哪些车,放行哪些车。

首先让他去实现web MVC configure,里面有一件写好的一些接口,就是说你可以配置哪些东西,一定要给你规定好了,具体怎么去配置,你去实现那些方法即可。


测试一下:重启服务器,直接访问其他页面,看能否访问?


OK,至此我们的登录功能就实现完成了,后续咱们就开始去实现其他模块了,老铁们如果本篇内容对你有帮助,不妨点赞收藏,也欢迎在评论区留言交流,你的每一份支持都是我持续创作的最大动力~👋

相关推荐
总要学点什么21 分钟前
第108篇:三维特效-图片轨迹线效果——把贴图滚成一串箭头,想用它的本色反而整条消失
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
乌暮1 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
YDS8292 小时前
Small Spring IOC篇:容器事件及其监听器
java·spring
金銀銅鐵2 小时前
带您看懂字节码指令(三):一行加法里有什么
java·jvm
文丑颜不良啊2 小时前
LeetCode2921~2940题目解析
java·leetcode
北漂人Java3 小时前
基于 Spring AI Alibaba WorkFlow 构建 Java 生产级 AI Agent
java·人工智能·spring
用户112936112193 小时前
编译全绿,上线就崩:MyBatis 五层方法名大小写埋下的坑
java
文丑颜不良啊4 小时前
LeetCode2901~2920题目解析
java·leetcode
码云社区4 小时前
能碳管理系统开发要关注什么?能源数据、统计口径与AI分析的衔接
java·人工智能·ai·能源·能源管理系统·能碳管理系统·能碳管理系统源码
Flynn Liang4 小时前
Agentic 工作流:子代理、Supervisor 与人工介入
java·langchain·多智能体·supervisor·agentic·langchain4j