?最近在做一個(gè)加減法驗(yàn)證碼敬察,記錄下實(shí)現(xiàn)的過(guò)程。
通常Java實(shí)現(xiàn)驗(yàn)證碼的工具會(huì)用到?kaptcha 這個(gè)工具包尔当,但實(shí)現(xiàn)的驗(yàn)證碼都是圖形驗(yàn)證碼莲祸,沒(méi)有看到加法驗(yàn)證碼蹂安,查詢了相關(guān)資料,實(shí)現(xiàn)了加減法驗(yàn)證碼锐帜,效果如圖
首先是pom所需要的依賴
? ? ? ? <!--驗(yàn)證碼-->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>com.github.penggle</groupId>
? ? ? ? ? ? <artifactId>kaptcha</artifactId>
? ? ? ? ? ? <version>2.3.2</version>
? ? ? ? </dependency>
主要是配置類里面田盈,更改下驗(yàn)證碼的字符串,代碼如下
/**
* 生成驗(yàn)證碼配置
*
* @author hqk
*/
@Configuration
public class KaptchaConfig {
? ? @Bean
? ? public DefaultKaptcha producer() {
? ? ? ? Properties properties = new Properties();
? ? ? ? properties.put("kaptcha.border", "no");
? ? ? ? properties.put("kaptcha.textproducer.font.color", "black");
? ? ? ? properties.put("kaptcha.textproducer.char.space", "5");
? ? ? ? //如果需要生成算法驗(yàn)證碼加上一下配置
? ? ? ? properties.put("kaptcha.textproducer.char.string", "1234567890");
? ? ? ? //如果需要去掉干擾線
? ? ? ? properties.put("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
? ? ? ? Config config = new Config(properties);
? ? ? ? DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
? ? ? ? defaultKaptcha.setConfig(config);
? ? ? ? return defaultKaptcha;
? ? }
}
接下來(lái)寫個(gè)controller實(shí)驗(yàn)下缴阎,代碼如下
/**
* <p></p >
*
* @author hqk
* @version 1.0: SysLoginController.java v0.1 2019/6/25 上午10:44 hqk Exp$
*/
@RequestMapping("/app/system")
@Controller
public class SysLoginController {
? ? @Resource
? ? private StringRedisTemplate stringRedisTemplate;
? ? @Resource
? ? private Producer producer;
? ? @RequestMapping("number.jpg")
? ? public void number(HttpServletResponse response) throws IOException {
? ? ? ? response.setHeader("Cache-Control", "no-store, no-cache");
? ? ? ? response.setContentType("image/jpeg");
? ? ? ? //生成文字驗(yàn)證碼
? ? ? ? String text = producer.createText();
? ? ? ? //個(gè)位數(shù)字相加
? ? ? ? String s1 = text.substring(0, 1);
? ? ? ? String s2 = text.substring(1, 2);
? ? ? ? int count = Integer.valueOf(s1).intValue() + Integer.valueOf(s2).intValue();
? ? ? ? //生成圖片驗(yàn)證碼
? ? ? ? BufferedImage image = producer.createImage(s1 + "+" + s2 + "=?");
? ? ? ? //保存 redis key 自己設(shè)置
? ? ? ? //stringRedisTemplate.opsForValue().set("",String.valueOf(count));
? ? ? ? ServletOutputStream out = response.getOutputStream();
? ? ? ? ImageIO.write(image, "jpg", out);
? ? }
}
好了允瞧,java實(shí)現(xiàn)加法驗(yàn)證碼就實(shí)現(xiàn)了
代碼git地址:?https://github.com/qiankunhu/springbootdemo? git@github.com:qiankunhu/springbootdemo.git
推薦一下我自己的前端學(xué)習(xí)群562862926,里面有大神總結(jié)的一套前端教學(xué)視頻蛮拔,歡迎有興趣的朋友進(jìn)群一起學(xué)習(xí)