您的位置:首页 > 科技 > 能源 > springboot 图形验证码 前后端分离解决方案 easy-captcha

springboot 图形验证码 前后端分离解决方案 easy-captcha

2024/12/22 18:48:28 来源:https://blog.csdn.net/wangjun5159/article/details/139429837  浏览:    关键词:springboot 图形验证码 前后端分离解决方案 easy-captcha

easy-captcha介绍

easy-captcha,提供了Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目,是个很好用的工具库,文档比较完备。

在这里插入图片描述

用法

添加maven依赖

<!--图形验证码--><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency>

前后端分离时,返回图形验证码的key和图片的base64;

import com.wf.captcha.SpecCaptcha;
/*** 获取图形验证码** @return*/@RequestMapping(value = "/getCaptcha", method = RequestMethod.GET)public Response getCaptcha() {final int width = 111;final int height = 36;String uuid = UUIDUtil.getUUID();int len = 4;//数字、字母混合的验证码final SpecCaptcha captcha = new SpecCaptcha(width, height, len);String captchaValue = captcha.text();final String captchaKey = getCaptchaKey(uuid);log.debug("图形验证码key:{},value:{}", captchaKey, captchaValue);//放入redis并设置过期时间redisUtil.set(captchaKey, captchaValue, Constants.VERIFYCODE_EXPIRETIME * 60);final CaptchaResult captchaResult = new CaptchaResult();captchaResult.setCaptchaKey(uuid);captchaResult.setImg(captcha.toBase64());return captchaResult;}public class CaptchaResult {/*** 图形验证码的key*/private String captchaKey;/*** 图形验证码的base64图片*/private String img;
}

提交验证时,将图形验证码的key和图形验证码值一并提交。

测试样例

public class Test {public static void main(String[] args) {// png类型SpecCaptcha captcha = new SpecCaptcha(130, 48);captcha.text();  // 获取验证码的字符captcha.textChar();  // 获取验证码的字符数组// gif类型GifCaptcha captcha = new GifCaptcha(130, 48);// 中文类型ChineseCaptcha captcha = new ChineseCaptcha(130, 48);// 中文gif类型ChineseGifCaptcha captcha = new ChineseGifCaptcha(130, 48);// 算术类型ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);captcha.setLen(3);  // 几位数运算,默认是两位captcha.getArithmeticString();  // 获取运算的公式:3+2=?captcha.text();  // 获取运算的结果:5captcha.supportAlgorithmSign(2); // 可设置支持的算法:2 表示只生成带加减法的公式captcha.setDifficulty(50); // 设置计算难度,参与计算的每一个整数的最大值captcha.out(outputStream);  // 输出验证码//简单算术类型 SimpleArithmeticCaptcha,用法同ArithmeticCaptcha,只支持加减,计算结果为正整数}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com