登录验证码实现

Hutool

有参考文档;很多工具类;把一些功能都封装好;都不用你自己去写;直接调用它的工具类

它这里会详细告诉你引入方式Hutool

java 复制代码
  <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.19</version>
        </dependency>

实现1:我们不保存在本地;输出字节流给前端;然后在前端显示出来

实现2:保存在static的img里;然后url写在前端的这个部分的图片里;这个图形验证码就有了(但是这里会有个问题;如果是部署云服务器;那我们jar包;没法把文件保存在这里;我们就写系统的目录用来保存)

代码改造

我们可以使用另一种方式;把验证码存在Session;然后我们就可以通过用户Session取这个验证码

注意:拦截器要注意放行

前端:

后端:

封装的类;返回一个图片文件名;还有验证码的内容;

配置图片储存路径:(之所以不写在static;是因为如果我们要打包成jar发布到云服务器;那就没法在jar包里写入文件)

注意:一定不能遗漏在application.properties引用一下spring.profiles.active=dev

拦截器开放:

后端的接口;以"/image/"开头的路径,拦截器将不会对其进行处理

.excludePathPatterns("/user/getcode")

.excludePathPatterns("/image/**");

进行一个映射配置;当访问"/image/**";就会映射到imagePath;就是我们配置到那个路径。addResourceHandlers方法是在WebMvcConfigurerAdapter或WebMvcConfigurer口中的一个方法,用于配置静态资源的处理。file:"前缀表示这是一个本地文件系统路径。+ imagePath表示要处理的静态资源存储路径。

要使用imagepath注入一下

@Value("${imgpath}")

private String imagePath;

验证码判断:

首先我们在前端获取验证码;然后将内容发给后端;后端我们从Session取到验证码对比一些即可知道真伪(能提高点安全程度;暴力破解的成本就提高了)

这个判断逻辑放最前面去也是没有问题的;因为我们在储存这个验证码的时候;如果登录请求这里还没创建Session;我们就会在那里创建Session;如果有就选中

效果:


相关推荐
大江东去浪淘尽千古风流人物3 天前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速
吃一碗粉只付一碗钱4 天前
12-给SPA友好的401和403响应
c#·状态模式
sunlifenger4 天前
嵌入式部署,解锁张家港智慧灯杆的“极简组网”密码
科技·状态模式
上火的金鱼妹5 天前
关于多进程sse连接通知的实战
javascript·状态模式·sse
阿俊-全栈开发6 天前
LikeShop 小程序商城首页可配置弹窗的设计与实现(Java + uni-app)
小程序·状态模式·likeshop·likeshop开源商城
lingyubb6 天前
配音工具怎么选?从 TTS 合成链路看 6 个可量化参数
状态模式
平头哥技术团队7 天前
从预订问到退房:一间山野民宿的数字人「旅程地图」——Theme07_Homestay.vue 端到端拆解
状态模式·数字人
未来之窗软件服务8 天前
web网络请求竞态问题与取消方案-东方仙盟
前端·状态模式·仙盟创梦ide·东方仙盟·网络取消
一级新生10 天前
多智能体协作:常用协作模式详解
人工智能·状态模式·agent·多智能体·智能体