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

相关推荐
wuminyu2 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
考虑考虑3 小时前
Java实现hmacsha256加密算法
java·后端·java ee
captain3763 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
MetaLite3 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
Co_Hui3 小时前
Java 线程状态
java
土司大王4 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
言乐64 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
土司大王4 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
金金计较.4 小时前
Go语言-3
java·开发语言·golang
Wang's Blog5 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring