如何向jcaptcha添加验证码
前言:
现在很多系统和网站都使用验证码来增强系统安全性。
下面介绍jcaptcha生成验证码并验证的服务。octo . captcha . service . image . defaultmanageableimagecaptchaservice类。
生成验证码,作为图片信息输出给客户端。
获取验证码的方法:captchaservice。getChallengeforid (ID)。
根据你的id随机生成验证码。
代码片段
受保护的void genernateCaptchaImage(最终HttpServletRequest请求,最终HttpServletResponse响应)
引发IOException {
//设置响应,输出图片客户端不会缓存。
response . setdate header(" Expires ",1L);
response.addHeader("Pragma ","无缓存");
response . set header(" Cache-Control "," no-cache,no-store,max-age = 0 ");
response . setcontenttype(" image/JPEG ");
ServletOutputStream out = response . get output stream();
//获取验证码
尝试{
string captchaId = request . getsession(true)。getId();
//使用会话的id生成验证码。
buffered image challenge =(buffered image)captchaservice . getchallengeforid(captchaId,request . get locale());//获取验证码
ImageIO.write(挑战,“jpg”,out);
out . flush();
} catch(CaptchaServiceException e){
system . out . println(e);
}最后{
out . close();
}
}
在显示层上,验证码
3.验证码验证
在介绍图形代码过滤器之前,先介绍一下jcaptcha生成验证码的api和代码。
验证码的生成和验证需要com的服务。jcaptcha的octo . captcha . service . image . defaultmanageableimagecaptchaservice。
生成验证码,作为图片信息输出给客户端。
获取验证码的方法:captchaservice。Validateresponsforid(验证码id,输入验证码);
返回值true表示验证通过,false表示验证未通过。
代码片段
受保护的boolean validatecaptcha challenge(最终HttpServletRequestrequest请求){
尝试{
//获取验证码的id,使用会话的id生成验证码。
string captchaID = request . getsession()。getId();
//获取输入验证码
string challenge response = request . getparameter(captcharametername);
返回captchaservice . validateresponseforid(captchaID,challengeResponse);
} catch(CaptchaServiceException e){
system . out . println(e);
返回false
}
}