Jcaptcha:
<dependency>
<groupId>com.octo.captcha</groupId>
<artifactId>jcaptcha</artifactId>
<version>1.0</version>
</dependency>
public class JCaptchaUtil {
private static final ImageCaptchaService service = imageCaptchaService();
public static ImageCaptchaService getService(){
return service;
}
private static ImageCaptchaService imageCaptchaService(){
//背景
UniColorBackgroundGenerator backgroundGenerator = new UniColorBackgroundGenerator(100,50);
//字
RandomRangeColorGenerator textColor = new RandomRangeColorGenerator(new int[]{0,100},new int[]{0,200},new int[]{50,250});
RandomTextPaster randomTextPaster = new RandomTextPaster(4,5,textColor);
RandomFontGenerator randomFontGenerator = new RandomFontGenerator(20,30,new Font[]{new Font("TimesRoman",Font.PLAIN,20)});
//组装图像
ComposedWordToImage composedWordToImage = new ComposedWordToImage(randomFontGenerator,backgroundGenerator,randomTextPaster);
ComposeDictionaryWordGenerator cdwg = new ComposeDictionaryWordGenerator(new FileDictionary("toddlist"));
GimpyFactory gf = new GimpyFactory(cdwg,composedWordToImage);
GenericCaptchaEngine gce = new GenericCaptchaEngine(new CaptchaFactory[]{gf});
return new GenericManageableCaptchaService(gce,20,2000,2000);
}
}
@RestController
@RequestMapping("/jcaptcha")
public class JCaptchaController {
String attrName = "verifyCode";
@GetMapping("/generator")
@TokenCheck(required = false)
public void generatorCode(HttpServletRequest request, HttpServletResponse response){
try {
String id = request.getSession().getId();
BufferedImage bufferedImage = JCaptchaUtil.getService().getImageChallengeForID(id);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(byteArrayOutputStream);
jpegEncoder.encode(bufferedImage);
Object attribute = request.getSession().getAttribute(attrName);
System.out.println(attribute);
response.setHeader("Cache-Control","no-store");
response.setContentType("image/jpeg");
byte[] bytes = byteArrayOutputStream.toByteArray();
ServletOutputStream servletOutputStream = response.getOutputStream();
servletOutputStream.write(bytes);
servletOutputStream.flush();
servletOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@GetMapping("/verify")
@TokenCheck(required = false)
public String verify(String verifyCode, HttpServletRequest request){
Boolean aBoolean = JCaptchaUtil.getService().validateResponseForID(request.getSession().getId(), verifyCode);
if (aBoolean){
return "通过";
}
return "不通过";
}
}
happy-captcha:
<dependency>
<groupId>com.ramostear</groupId>
<artifactId>Happy-Captcha</artifactId>
<version>1.0.1</version>
</dependency>
@RestController
@RequestMapping("/happy-captcha")
public class HappyCaptchaController {
@GetMapping("/generator")
@TokenCheck(required = false)
public void generatorCode(HttpServletRequest request, HttpServletResponse response) {
HappyCaptcha.require(request,response)
.style(CaptchaStyle.ANIM)
.build().finish();
}
@GetMapping("/verify")
@TokenCheck(required = false)
public String verity(String verifyCode, HttpServletRequest request){
Boolean aBoolean = HappyCaptcha.verification(request,verifyCode,true);
if(aBoolean){
HappyCaptcha.remove(request);
return "通过";
}
return "不通过";
}
}
easy-captcha:
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
@RestController
@RequestMapping("/easy-captcha")
public class EasyCaptchaController {
@GetMapping("/generator")
@TokenCheck(required = false)
public void generatorCode(HttpServletRequest request, HttpServletResponse response) {
try {
//基础
//CaptchaUtil.out(request,response);
//算数
//ArithmeticCaptcha arithmeticCaptcha = new ArithmeticCaptcha(200,50);
//三个数的运算
//arithmeticCaptcha.setLen(3);
//CaptchaUtil.out(arithmeticCaptcha,request,response);
//汉字
ChineseCaptcha chineseCaptcha = new ChineseCaptcha(150,50);
CaptchaUtil.out(chineseCaptcha,request,response);
} catch (IOException e) {
e.printStackTrace();
}
}
@GetMapping("/verify")
@TokenCheck(required = false)
public String verity(String verifyCode, HttpServletRequest request){
Boolean aBoolean = CaptchaUtil.ver(verifyCode,request);
if(aBoolean){
HappyCaptcha.remove(request);
return "通过";
}
return "不通过";
}