风和日丽的早上开车和女朋友一起上班,说道一些有的没的技术,突然女朋友问我怎么实现后端校验验证码,我之前是看过一点别人写的逻辑,支支吾吾的结果没讲清楚,女朋友说我装逼失败,这怎么能忍,于是奋发图强学校了一下我们公司大佬的逻辑,原来核心就是开源的kaptcha。
先来一段官方介绍,用来表示这是一篇技术博客:
Kaptcha 简介
Kaptcha 是一个非常实用的验证码生成工具,它是基于SimpleCaptcha的开源项目。通过调整Kaptcha配置可以生成各种样式的验证码。
使用Kaptcha可以方便的配置以下细节:
- 验证码的字体
 - 验证码字体的大小
 - 验证码字体的字体颜色
 - 验证码内容的范围
 - 验证码图片的大小,边框,边框粗细,边框颜色
 - 验证码的干扰线
 - 验证码的样式
 
好了,正式完了就开始说一下实现思路吧,其实也挺简单
- 前端请求后台接口,后台随机生成一个uuid给前端
 

前端拿到uuid之后,通过这个uuid请求后台,后台通过uuid生成一张验证码图片返给前端


[^这里说一下后端的实现:其实这个uuid是为了和图片做绑定而产生的,在数据库的表示如下图所示]:

- 登录校验验证码:用户登录填写账号、密码、验证码,带着uuid (重点:带着uuid,这个uuid其实就相当于这张图片验证码的一个识别,只有带着这个,后台才知道你用的是哪张验证码,才有办法去校验)调用后台登录接口,后台 通过带过来的uuid去查询这张图片验证码的文本验证码是多少,然后比对校验就可以了,是不是很简单。
 
当然验证码都是有失效时间的,还有验证码用完就删掉啊,这个就不多说了,聪明的人自然会懂,我女朋友那么聪明,应该会懂的 O(∩_∩)O~
下面的是具体实现代码,留作备用观摩。
1  | ("captcha.jpg")  | 
1  | 
  | 
1  | <dependency>  | 
1  | /**  | 
附:
JCaptcha简介
JCapthca是一个开源的用来生成图形验证码的Java开源组件,它非常强大,不光是可以生成图片式的验证码,还可以生成声音式的。
JCaptcha是CAPTCHA里面的一个比较著名的项目。