SpringBoot集成图形验证码(⽀持gif、中英⽂、算术)Java图形验证码,⽀持gif、中英⽂、算术
前⾔
通⽤Response中的代码就不贴了  ⾃⼰去掉返回字符串 或替换成⾃⼰项⽬中的
集成⽰例
1. 依赖
<!-- 图形验证码 -->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
springboot中文<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!-- mvnrepository/artifact/org.apachemons/commons-lang3 -->
<dependency>
<groupId>org.apachemons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
2. 核⼼⼯具类
public class CaptchaUtil {
private static SpecCaptcha specCaptcha = new SpecCaptcha(130, 48);
private static GifCaptcha gifCaptcha = new GifCaptcha(130, 48);
private static ChineseCaptcha chineseCaptcha = new ChineseCaptcha(130, 48);
private static ChineseGifCaptcha chineseGifCaptcha = new ChineseGifCaptcha(130, 48);
private static ArithmeticCaptcha arithmeticCaptcha = new ArithmeticCaptcha(130, 48);
/
**
* TODO  释义
* SpecCaptcha 和 GifCaptcha 可设置
* TYPE_DEFAULT 数字和字母混合
* TYPE_ONLY_NUMBER 纯数字
* TYPE_ONLY_CHAR 纯字母
* TYPE_ONLY_UPPER 纯⼤写字母
* TYPE_ONLY_LOWER 纯⼩写字母
* TYPE_ONLY_LOWER 纯⼩写字母
* TYPE_NUM_AND_UPPER 数字和⼤写字母
*
* 内置字体类型中⽂⽅式勿设置
* Captcha.FONT_1
* Captcha.FONT_2
* Captcha.FONT_3
* Captcha.FONT_4
* Captcha.FONT_5
* Captcha.FONT_6
* Captcha.FONT_7
* Captcha.FONT_8
* Captcha.FONT_9
* Captcha.FONT_10
*/
/**
* 英⽂
*/
public static SpecCaptcha specCaptcha() throws Exception{
//默认4位
specCaptcha.setLen(6);
specCaptcha.setCharType(Captcha.TYPE_ONLY_CHAR);
specCaptcha.setFont(Captcha.FONT_2);
return specCaptcha;
}
/
**
* Gif
*/
public static GifCaptcha gifCaptcha() throws Exception{
gifCaptcha.setCharType(Captcha.TYPE_ONLY_CHAR);
gifCaptcha.setFont(Captcha.FONT_2);
return gifCaptcha;
}
/**
* 中⽂
*/
public static ChineseCaptcha chineseCaptcha() throws Exception{
return chineseCaptcha;
}
/**
* 中⽂Gif
*/
public static ChineseGifCaptcha chineseGifCaptcha() throws Exception{        return chineseGifCaptcha;
}
/**
* 算术
*/
public static ArithmeticCaptcha arithmeticCaptcha() throws Exception{        arithmeticCaptcha.setCharType(Captcha.TYPE_ONLY_CHAR);
arithmeticCaptcha.setFont(Captcha.FONT_2);
//⼏位数运算
arithmeticCaptcha.setLen(3);
return arithmeticCaptcha;
}
/**
* 输出⾄本地
*/
public static void main(String[] args) throws Exception{
public static void main(String[] args) throws Exception{
FileOutputStream outputStream = new FileOutputStream(new File("/data/file/captcha.png"));
specCaptcha().out(outputStream);
outputStream.close();
//输出结果
System.out.());
}
}
3. controller
@RestController
public class LoginController {
@Autowired
private RedisUtils redisUtils;
/**
* 获取图形验证码
*/
@GetMapping("/captcha")
public void getCaptcha(HttpServletResponse response,String token) throws Exception{
SpecCaptcha specCaptcha = CaptchaUtil.specCaptcha();
specCaptcha.OutputStream());
String verCode = ().toLowerCase();
//5分钟过期
redisUtils.set(token, verCode, 5L * 60);
}
/**
* 登录校验⽰例
*/
@GetMapping("/login")
public Response login(String username,String password,String verCode,String verKey){
// 获取redis中的验证码
Object redisCode = (verKey);
// 判断验证码是否过期
if (redisCode == null){
return Response.build().err(Error.CAPTCHA_KEY_ERROR);
}
if (StringUtils.isEmpty(verCode)  || !String().im().toLowerCase())) {            return Response.build().err(Error.CAPTCHA_KEY_VALUE_ERROR);
}
// todo 登录业务
return Response.build().ok();
}
}
4. 效果
5.  具体使⽤说明
6. 源码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。