加入谷歌验证码的maven依赖
<dependency>
<groupId>com.github.axet</groupId>
<artifactId>kaptcha</artifactId>
<version>0.0.9</version>
</dependency>
spring配置文件中配置验证码属性
<!--Google验证码-->
<bean id="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>
</props>
</constructor-arg>
</bean>
</property>
</bean>
Controller
@GetMapping("/captcha.do")
public void captcha(HttpServletResponse response) throws IOException {
// 不缓存
response.setHeader("Cache-Control","no-store,no-cache");
// 相应格式
response.setContentType("image/jpeg");
// 生成文字
String imageText = producer.createText();
// 生成图片
BufferedImage image = producer.createImage(imageText);
// 我是用的是shiro
Session session = SecurityUtils.getSubject().getSession();
session.setAttribute(Constants.KAPTCHA_SESSION_KEY,imageText);
ServletOutputStream outputStream = response.getOutputStream();
ImageIO.write(image,"jpeg",outputStream);
outputStream.flush();
}
JS刷新验证码
function refreshImage() {
$.get("sys/user/captcha.do",{},function (result) {
$("#kaptcha").attr("src","sys/user/captcha.do");
});
}