Kaptcha使用步骤
Kaptcha配置验证码生成参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <!-- 配置Kaptcha --> <bean id="kaptchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"> <property name="config"> <bean class="com.google.code.kaptcha.util.Config"> <constructor-arg> <props> <!--验证码图片不生成边框--> <prop key="kaptcha.border">no</prop> <!-- 验证码图片宽度为120像素 --> <prop key="kaptcha.image.width">120</prop> <!-- 验证码图片字体颜色为蓝色 --> <prop key="kaptcha.textproducer.font.color">blue</prop> <!-- 每个字符最大占用40像素 --> <prop key="kaptcha.textproducer.font.size">40</prop> <!-- 验证码包含4个字符 --> <prop key="kaptcha.textproducer.char.length">4</prop> </props> </constructor-arg> </bean> </property> </bean>
|
开发KaptchaController生成图片验证码图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class KaptchaController { @Resource private Producer kaptchaProducer; //生成验证码图片 @GetMapping("/verify_code") public void createVerifyCode(HttpServletRequest request , HttpServletResponse response) throws IOException { //响应立即过期 response.setDateHeader("Expires",0); //不缓存任何图片数据 response.setHeader("Cache-Control" , "no-store,no-cache,must-revalidate"); response.setHeader("Cache-Control" , "post-check=0,pre-check=0"); response.setHeader("Pragma" , "no-cache"); response.setContentType("image/png"); //生成验证码字符文本 String verifyCode = kaptchaProducer.createText(); request.getSession().setAttribute("kaptchaVerifyCode",verifyCode); System.out.println(request.getSession().getAttribute("kaptchaVerifyCode")); BufferedImage image = kaptchaProducer.createImage(verifyCode);//创建验证码图片 ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "png", out);//输出图片流 out.flush(); out.close(); }
}
|
将前台输入验证码与session保存的验证码进行对比