Spring 集成kaptcha图片二维码
引入依赖
<!--验证码-->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
注册Bean
<bean class="com.google.code.kaptcha.impl.DefaultKaptcha" id="kaptcha">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<prop key="kaptcha.border">no</prop>
<prop key="kaptcha.image.width">120</prop>
<prop key="kaptcha.textproducer.font.color">blue</prop>
<prop key="kaptcha.textproducer.font.size">40</prop>
<prop key="kaptcha.textproducer.char.length">4</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
二维码请求控制器编写
@Controller
public class KaptchaController {
@Resource
private Producer kaptcha;
@GetMapping("/verify_code")
public void createVerifyCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/png");
//产生而二维码
String verifyCode = kaptcha.createText();
request.getSession().setAttribute("verifyCode", verifyCode);
BufferedImage image = kaptcha.createImage(verifyCode);
ServletOutputStream outputStream = response.getOutputStream();
ImageIO.write(image, "png", outputStream);
outputStream.flush();
outputStream.close();
}
}
注册验证二维码
@PostMapping("/registe")
@ResponseBody
public Map registe(String vc, String username, String password, String nickname, HttpServletRequest request) {
String verifyCode = (String) request.getSession().getAttribute("verifyCode");
HashMap<String, Object> result = new HashMap<>();
if (vc == null || !vc.equalsIgnoreCase(verifyCode)) {
result.put("code", "VC01");
result.put("msg", "验证码错误");
} else {
result.put("code", "0");
result.put("msg", "success");
}
return result;
}
完成 kaptcha 图片二维码 效验逻辑 · MingCaiXiong/spring-learn@f9d0cfa