Kaptcha:google自动生成验证码组件
kaptcha的使用比较方便,只需添加jar包依赖之后简单地配置就可以使用了
kaptcha所有配置都可以通过web.xml来完成,如果你的项目中使用了Spring MVC,那么则有另外的一种方式来实现
<!-- google验证码 --> <dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</version> </dependency>
springmvc项目中使用:
1 在spring-mvc.xml中进行配置:
kaptcha的参数介绍:http://blog.csdn.net/qq_21120027/article/details/52129066
<!-- 配置google验证码 --> <bean name="producer" 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> <prop key="kaptcha.textproducer.font.color">black</prop> <prop key="kaptcha.textproducer.char.space">5</prop> <prop key="kaptcha.textproducer.char.length">5</prop> </props> </constructor-arg> </bean> </property> </bean>
2 controller中生成验证码:
@RequestMapping("/kaptcha.jpg") public void kaptcha(HttpServletResponse response) throws IOException{ response.setHeader("Cache-Control", "no-store,no-cache"); response.setContentType("image/jpeg"); //生成文字 String text = producer.createText(); //生成图片 BufferedImage image = producer.createImage(text); //保存到shiro session中 SecurityUtils.getSubject().getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); out.flush(); }
3 login页面:
<div class="form-group"> <input type="text" class="form-control" placeholder="验证码" v-model="user.kaptcha"> </div> <div class="form-group" text-left> <img id="kaptcha" :src="kaptcha.jpg" alt="验证码" @click="refreshCode" style="cusor:pointer;"/> <a href="#" @click.prevent="refreshCode">点击刷新</a> </div>
4 点击刷新验证码:
refreshCode: function(){ $("#kaptcha").attr('src', vm.kaptcha); }
使用验证码需要注意的地方:
无论哪一项验证错误,都必须刷新验证码,否则验证码会过时或者被暴力破解