jcaptcha怎么添加验证码

作者&投稿:贺胃 (若有异议请与网页底部的电邮联系)
请教告诉解决jcaptcha生成验证码问题~

// 图片的大小
改用
BackgroundGenerator backgroundGenerator = new UniColorBackgroundGenerator(
new Integer(300), new Integer(100) , Color.white);
可以改变背景色


至于文字居中的话应该是改
// 验证码图片的大小设置
private static final int IMAGE_CAPTCHA_WIDTH = 50;
private static final int IMAGE_CAPTCHA_HEIGHT = 20;
都改成40试试。

<%@ page contentType="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();

if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//设置页面不缓存
//response.setHeader("Pragma","No-cache");
//response.setHeader("Cache-Control","no-cache");
//response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
Graphics g = image.getGraphics();

//生成随机类
Random random = new Random();

// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);

//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));

//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}

// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){

String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}

// 将认证码存入SESSION
session.setAttribute("rand",sRand);

// 图象生效
g.dispose();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>

使用jcaptcha 产生验证码
前言:
现在很多系统和网站使用场景都使用验证码来增强系统安全性。
下面介绍jcaptcha来产生验证码和验证 http://jcaptcha.sourceforge.net/
下面的程序代码参考和仿照了springside3的实现
1.在web.xml上增加验证码的过滤器
创建验证码图形的Filter
<filter-mapping>
<filter-name>jcaptchaFilter</filter-name>
<url-pattern>/jcaptcha.jpg</url-pattern>
</filter-mapping>
验证的Filter
<filter-mapping>
<filter-name>jcaptchaFilter</filter-name>
<url-pattern>/check</url-pattern>
</filter-mapping>
自己写用jcaptcha产生验证码和验证实现的filter
<filter>
<filter-name>jcaptchaFilter</filter-name>
<filter-class>security.jcaptcha.JCaptchaFilter</filter-class>
<init-param><!--失败时的返回页面 -->
<param-name>failureUrl</param-name>
<param-value>/head.vm</param-value>
</init-param>
</filter>
2.获取验证码
在介绍图形码过滤器前,介绍一下jcaptcha产生验证码的api和code
验证码产生和验证需要jcaptcha的com.octo.captcha.service.image.DefaultManageableImageCaptchaService类的服务
产生验证码,并以图片信息输出到客户端
获取验证码的方法: captchaService.getChallengeForID(id)
根据你的id随机产生验证码
代码片段
protected void genernateCaptchaImage(final HttpServletRequest request, final HttpServletResponse response)
throws IOException {
//设置response,输出图片客户端不缓存
response.setDateHeader("Expires", 1L);
response.addHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0");
response.setContentType("image/jpeg");
ServletOutputStream out = response.getOutputStream();
//获取验证码
try {
String captchaId = request.getSession(true).getId();
//用session的id来产生验证码
BufferedImage challenge = (BufferedImage) captchaService.getChallengeForID(captchaId, request.getLocale());//获取验证码
ImageIO.write(challenge, "jpg", out);
out.flush();
} catch (CaptchaServiceException e) {
System.out.println(e);
} finally {
out.close();
}
}
在显示层,展示验证码<img id="captchaImg" src="显示验证码的过滤器url"/>
3.验证码验证
在介绍图形码过滤器前,介绍一下jcaptcha产生验证码的api和code
验证码产生和验证需要jcaptcha的com.octo.captcha.service.image.DefaultManageableImageCaptchaService类的服务
产生验证码,并以图片信息输出到客户端
获取验证码的方法: captchaService.validateResponseForID(captchaID, 输入的验证码);
返回值true 表示验证通关,false表示验证还没有通过
代码片段
protected boolean validateCaptchaChallenge(final HttpServletRequestrequest) {
try {
//获取产生验证码的id,用session的id来产生验证码
String captchaID = request.getSession().getId();
//获取输入的验证码
String challengeResponse = request.getParameter(captchaParamterName);
return captchaService.validateResponseForID(captchaID, challengeResponse);
} catch (CaptchaServiceException e) {
System.out.println(e);
return false;
}
}


steamcaptcha响应无效怎么办
captcha的响应无效解决办法:解决方法一:使用浏览器打开steam 切换注册途径,在Steam客户端注册的玩家,可以查询Steam官网地址入口进入,注册完成,可以有效解决steamCAPTCHA的响应似乎无效的情况。玩家记得卸载之前的Steam ,在官网重新下载Steam客户端。解决方法二:优化网络 steam官方服务器国内连接问题,上线人数...

注册steam账号captcha响应无效怎么办
当在注册Steam账号时遇到“captcha响应无效”的错误提示,通常可以尝试以下方法解决:刷新验证码并重新输入,检查网络连接是否稳定,关闭可能干扰验证码的浏览器插件或软件,以及尝试使用不同的浏览器或设备进行注册。详细 首先,当遇到“captcha响应无效”这样的错误时,最简单直接的办法就...

captcha响应无效怎么办?
如果您的Captcha响应无效,可能是由于以下原因之一:验证码图片不正确:请确保您输入的验证码图片是正确的,并且与您所使用的服务或平台相匹配。验证码图片显示错误:如果验证码图片显示错误,可能是由于图片的分辨率或显示器设置不正确导致的。您可以尝试调整验证码图片的分辨率或显示器设置,然后再次尝试验证...

captcha错误怎么解决?
ie浏览器目录:C:\\Program Files\\Internet Explorer\\iexplore.exe然后重新打开steam客户端就好了恢复了。如果还是不行那就等自然恢复吧,毕竟是官方波动,此方法适用于部分用户。captcha无效都是验证码出了问题,一般跟你使用的浏览器或者代理有关。可以先试试关闭网页后重新打开后是否正常,有开启加速器的要...

captcha响应无效怎么办
chatGpt响应无效,可以更换网络、清除浏览器缓存、使用其他浏览器、联系网站支持。1、更换网络:尝试在不同的网络下进行操作。有时候,我们的网络环境可能会影响chatGpt验证码的识别。因此,在多个网络下进行操作,可能会帮助解决这个问题。2、清除浏览器缓存:浏览器缓存可能会干扰chatGpt验证码的显示和识别...

captcha错误响应怎么解决
captcha错误响应解决办法如下:不要在steam客户端继续操作了,在浏览器上面复制此链接进行操作。最好在ie浏览器上多操作几次就恢复了,其他浏览器也行。ie浏览器目录:C:\\ProgramFiles\\InternetExplorer\\iexplore.exe。然后重新打开steam客户端就好了恢复了。

steam您对captcha的响应无效怎么办
首先打开浏览器,清除浏览器所有缓存。我们以管理员身份打开cmd。然后我们只需要在cmd里输入以下指令【ipconfig\/flushdns】。接下来输入【netshwinsockreset】。最后一步,重启电脑即可。Steam出现captcha响应似乎无效的解决方法:最好在ie浏览器上多操作几次就恢复了,其他浏览器也行。ie浏览器目录:C:\\...

steam出现captcha响应似乎无效怎么办呢?
Steam出现captcha响应似乎无效的解决方法:1、最好在ie浏览器上多操作几次就恢复了,其他浏览器也行。ie浏览器目录:C:\\ProgramFiles\\InternetExplorer\\iexplore.exe然后重新打开steam客户端就好了恢复了。如果还是不行那就等自然恢复吧,毕竟是官方波动,此方法适用于部分用户。2、在手机各浏览器上打开这个...

steam登陆显示captcha响应无效怎么办?
方法一:优化网络环境。检查网路是否良好,可以尝试更换网络,或者是开手机热点看看。由于steam服务器物理距离与国内玩家较远,网络连接不稳定,网络传输不稳定,在进行注册时容易出现注册失败问题。steam人机身份验证captcha无效可以试一下下面5种方法。使用加速器加速steam,近期steam不开加速器很多人都打不开...

Steam人机验证不了captcha响应怎么解决?
人机验证老是验证不了captcha响应无效的方法如下:许多用户在电脑上玩很多游戏,Steam是许多用户的首选,他们中的许多人在创建帐户时会遇到这个问题:当创建一个Steam帐户时,很多人都被提示“您对CAPTCHA的响应似乎无效。请在下方重新验证您不是机器人”,需要重新验证。这种情况我也遇到了,看了一堆贴,...

渠县17898626393: jcaptcha怎么添加验证码 -
大季儿喘可: 使用jcaptcha 产生验证码前言:现在很多系统和网站使用场景都使用验证码来增强系统安全性.下面介绍jcaptcha来产生验证码和验证 http://jcaptcha.sourceforge.net/下面的程序代码参考和仿照了springside3的实现1.在web.xml上增加验证码的过...

渠县17898626393: jcaptcha怎么配置效果比较好看 -
大季儿喘可: 公司一般都用自己的框架的,如果非要比较的话JCaptcha4Struts2比较好用JCaptcha4Struts2是一个Struts2的插件,用来增加验证码的支持,使用时只需要用一个JSP标签()即可,直接在struts.xml中进行配置,使用强大的JCaptcha来生成验证码图片.

渠县17898626393: spring security3 的UserDetails的扩展怎么弄 -
大季儿喘可: security的登录参数验证主要是经过UsernamePasswordAuthenticationFilter过滤器 所以我们自己写个新的实现类类继承UsernamePasswordAuthenticationFilter,验证码工具我是使用jcaptcha,相信大家对这个也不会感觉陌生吧,至于网上也有很...

渠县17898626393: java 中jtable 如何右击选中一行并弹出菜单 -
大季儿喘可: 1.表格的建立过程 String[] headers = { "No", "Table Name" }; Object[][] cellData = null; DefaultTableModel model = new DefaultTabl...

渠县17898626393: 访问Servlet能初始化init但不能执行service
大季儿喘可: img 的src 没有访问的servlet 的功能

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网