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

相关推荐
wangbing11259 分钟前
使用jps jstack排查系统问题
java
夜晚回家11 分钟前
Python 零基础入门 | 输入的数字为什么不能直接算
开发语言·python
时间的拾荒人12 分钟前
Qt 事件机制全解析:从事件处理到事件过滤器
开发语言·qt·面试
于指尖飞舞15 分钟前
java面试题总结
java·开发语言
ZealSinger41 分钟前
LangChain4j用AiServices拼Tool
java·rag·ai智能体·langchain4j
vx_Biye_Design1 小时前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
zhangzeyuaaa2 小时前
深入理解 Ruby 运算符:本质、分类、坑点与重载实战
开发语言·前端·ruby
一木 之林2 小时前
DeepSeek Agent 开发(一)
开发语言·前端·javascript
朔北之忘 Clancy2 小时前
青少年软编等考七级题解目录
开发语言·c++·青少年编程·gesp·csp·信奥赛·noi
ss2732 小时前
AI全栈实战 | 3.2-01 Python 基础:四大数据容器怎么选,推导式为什么是 Pythonic 的灵魂
开发语言·人工智能·python