目录
1. HappyCaptcha 说明
Happy Captcha是一款易于使用的Java验证码软件包,旨在花最短的时间,最少的代码量,实现Web站点的验证码功能。
2. HappyCaptcha pom引入
<dependency>
<groupId>com.ramostear</groupId>
<artifactId>Happy-Captcha</artifactId>
<version>1.0.1</version>
</dependency>
3. HappyCaptcha 验证码生成以及验证
package com.test.execption.controller;
import com.ramostear.captcha.HappyCaptcha;
import com.test.execption.exception.TokenCheck;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 类描述:验证码生成
*
* @author admin
* @date 2023-01-02 16:00
**/
@RestController
@RequestMapping(value = "happy-captcha")
public class HappyCaptchaController {
/**
* 验证码生成
* @param request
* @param response
*/
@GetMapping(value = "generator")
@TokenCheck(required = false)
public void generatorCode(HttpServletRequest request, HttpServletResponse response){
HappyCaptcha.require(request,response).build().finish();
}
/**
* 验证码验证
* @param verifyCode
* @param request
* @return
*/
@GetMapping(value = "verify")
public String verify(String verifyCode, HttpServletRequest request){
Boolean aBoolean = HappyCaptcha.verification(request,verifyCode,true);
if (aBoolean){
HappyCaptcha.remove(request);
return "通过";
}
return "不通过";
}
/**
* 验证码验证
* @param verifyCode
* @param request
* @return
*/
@GetMapping(value = "remove")
public String remove(String verifyCode, HttpServletRequest request){
Boolean aBoolean = HappyCaptcha.verification(request,verifyCode,true);
//清除验证码
HappyCaptcha.remove(request);
if (aBoolean){
HappyCaptcha.remove(request);
return "通过";
}
return "不通过";
}
}
4. HappyCaptcha 高级特性
4.1 style()
HappyCaptcha提供两种验证码展现形式:图片和动画。默认的展现形式为图片,可以通过style()方法修改默认值。style()方法的值由CaptchaStyle类提供,可供选择的值有IMG和ANIM。style()使用示例如下:
HappyCaptcha.require(request,response)
.style(CaptchaStyle.ANIM)
.build().finish();
4.2 type()
HappyCaptcha一共提供了12种验证码类型,你可以自由选择其中的一种类型作为验证码的内容形式。默认情况下,验证码使用数字和大小写字母的混合形式。验证码类型值由CaptchaType类提供,内容如下表:
值 | 说明 |
---|---|
centered 文本居中 | right-aligned 文本居右 |
DEFAULT | 数字、大小写字母随机组合 |
ARITHMETIC | 加、减、乘算数运算表达式 |
ARITHMETIC_ZH | 中文简体加、减、乘算数运算表达式描述 |
CHINESE | 常见汉字(3500个)随机组合 |
NUMBER | 0~9数字随机组合 |
NUMBER_ZH_CN | 中文数字(零至九)随机组合 |
NUMBER_ZH_HK | 中文繁体数字(零至玖)随机组合 |
WORD | 大小写字母随机组合 |
WORD_LOWER | 小写字母随机组合 |
WORD_UPPER | 大写字母随机组合 |
WORD_NUMBER_LOWER | 数字、小写字母随机组合 |
WORD_NUMBER_UPPER | 数字、大写字母随机组合 |
type()使用示例如下:
HappyCaptcha.require(request,response)
.type(CaptchaType.CHINESE)
.build().finish();
4.3 length()
length()方法用于设置验证码字符长度,默认情况下缺省值为5。你可以通过以下方式对验证码字符长度进行控制:
HappyCaptcha.require(request,response)
.length(6)
.build().finish();
4.4 width()
width()方法可对验证码图片的宽度进行调节,默认的缺省值为160。使用方式如下:
HappyCaptcha.require(request,response)
.width(180)
.build().finish();
4.5 height()
同width()方法一样,height()方法用于设置验证码图片的高度,默认缺省值为50。使用方式如下:
HappyCaptcha.require(request,response)
.height(60)
.build().finish();
4.6 font()
如果你想改变验证码的字体,可通过font()方法进行设置,默认缺省字体为微软雅黑。HappyCaptcha内置了四种字体,可以通过Fonts类进行调用。
HappyCaptcha.require(request,response)
.font(Fonts.getInstance().zhFont())
.build().finish();
4.7 链式调用
上面介绍了如何修改单个配置,HappyCaptcha支持链式调用,可同时对验证码的多个属性进行设置。例如:
@GetMapping("/captcha")
public void captcha(HttpServletRequest req,HttpServletResponse res){
HappyCaptcha.require(req,res)
.style(CaptchaStyle.ANIM) //设置展现样式为动画
.type(CaptchaType.CHINESE) //设置验证码内容为汉字
.length(6) //设置字符长度为6
.width(220) //设置动画宽度为220
.height(80) //设置动画高度为80
.font(Fonts.getInstance().zhFont()) //设置汉字的字体
.build().finish(); //生成并输出验证码
}
若验证码的类型为ARITHMETIC或ARITHMETIC_ZH,可省略验证码长度的设置。算术运算表达式的长度为5。