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

相关推荐
gugucoding8 分钟前
57. 【Java】日志框架:SLF4J与Logback
java·开发语言·logback
今天的砖头有点烫手啊9 分钟前
JVM 调优实战:从 GC 日志到参数优化,一次完整排查
java·jvm
此生决int15 分钟前
深入理解C++系列(15)——AVL树
开发语言·c++
筱璦26 分钟前
PHP+ VUE3机构级股票分仓管理交易系统源码可出
开发语言·php·vue3·量化·股票分仓
爱奥尼欧29 分钟前
10.C++ string 实现详解
java·开发语言·c++
小飞学编程...31 分钟前
【equals 、Comparable、Comparator 三者的区别】
java·python
骇客野人39 分钟前
Java分布式任务调度方案(完整落地指南)
java·开发语言·分布式
JacksonMx1 小时前
Spring @Async 坑点 + 改造方案
java·开发语言
你怎么知道我是队长1 小时前
IPv6 地址完全解析:从结构到实战
开发语言·php
Dovis(誓平步青云)1 小时前
牛奶不能减成负数:冰箱库存的筛选、去重与不可变更新
android·java·开发语言