如何向jcaptcha添加验证码

使用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

}

}