JCaptcha生成驗(yàn)證碼并讀取

Maven配置

<dependency>

? ? ? ? ? ? <groupId>com.octo.captcha</groupId>

? ? ? ? ? ? <artifactId>jcaptcha</artifactId>

? ? ? ? ? ? <version>1.0</version>

? ? ? ? </dependency>


編寫(xiě)JCaptchaUtil工具類(lèi)

package com.bruce.common.util;

import com.octo.captcha.CaptchaFactory;

import com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator;

import com.octo.captcha.component.image.color.RandomRangeColorGenerator;

import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;

import com.octo.captcha.component.image.textpaster.RandomTextPaster;

import com.octo.captcha.component.image.wordtoimage.ComposedWordToImage;

import com.octo.captcha.component.word.FileDictionary;

import com.octo.captcha.component.word.wordgenerator.ComposeDictionaryWordGenerator;

import com.octo.captcha.engine.GenericCaptchaEngine;

import com.octo.captcha.image.gimpy.GimpyFactory;

import com.octo.captcha.service.image.ImageCaptchaService;

import com.octo.captcha.service.multitype.GenericManageableCaptchaService;

public class JCaptchaUtil {

private static final ImageCaptchaService service =imageCaptchaService();

public static ImageCaptchaService getService() {

return service;

}

public static ImageCaptchaService imageCaptchaService() {

//設(shè)置背景

? ? ? ? UniColorBackgroundGenerator backgroundGenerator =new UniColorBackgroundGenerator(100,50);

//設(shè)置顏色

? ? ? ? RandomRangeColorGenerator textColor =new RandomRangeColorGenerator(new int[]{0,250},new int[]{0,250},new int[]{0,250});

RandomTextPaster randomTextPaster =new RandomTextPaster(4,5,textColor);

//設(shè)置字體

? ? ? ? RandomFontGenerator randomFontGenerator =new RandomFontGenerator(20,30);

//組裝成圖像

? ? ? ? ComposedWordToImage composedWordToImage =new ComposedWordToImage(randomFontGenerator,backgroundGenerator,randomTextPaster);

ComposeDictionaryWordGenerator cdwg =new ComposeDictionaryWordGenerator(new FileDictionary("toddlist"));

GimpyFactory gf =new GimpyFactory(cdwg,composedWordToImage);

GenericCaptchaEngine genericCaptchaEngine =new GenericCaptchaEngine(new CaptchaFactory[]{gf});

return new GenericManageableCaptchaService(genericCaptchaEngine,20,2000,2000);

}

}


編寫(xiě)JCaptchaController用于請(qǐng)求生成驗(yàn)證碼

package com.bruce.portal.web.controller;

import com.bruce.common.util.JCaptchaUtil;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.awt.image.BufferedImage;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

@RestController

@RequestMapping("/jcaptcha")

public class JCaptchaController {

String attrName ="verifyCode";

@GetMapping("/generatorCode")

public void generatorCode(HttpServletRequest request,HttpServletResponse response) {

System.out.println("generatorCode");

try {

BufferedImage bufferedImage =JCaptchaUtil.getService().getImageChallengeForID(request.getSession().getId());

ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();

//ImageIO jpegEncoder = JPEGCodec.createJPEGEncoder(byteArrayOutputStream);

? ? ? ? ? ? String formatName ="jpg";

//FileOutputStream out = new FileOutputStream(dstName);

//JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

//encoder.encode(dstImage);

? ? ? ? ? ? ImageIO.write(bufferedImage,formatName,byteArrayOutputStream);

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 ioe) {

ioe.printStackTrace();

}

}

@GetMapping("/verify")

public String verify(String verifyCode,HttpServletRequest request) {

boolean flag =JCaptchaUtil.getService().validateResponseForID(request.getSession().getId(), verifyCode);

if (flag) {

return "驗(yàn)證碼校驗(yàn)驗(yàn)通過(guò)";

}

return "驗(yàn)證碼校驗(yàn)不通過(guò)";

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容