当前位置: 首页 > 后端技术 > Java

kaptcha验证码组件介绍

时间:2023-04-01 18:51:35 Java

kaptcha是谷歌开源的一款简单实用的验证码生成工具。通过设置参数,可以自定义验证码大小、颜色、显示字符等。Maven引入com.google.code.kaptcha:kaptcha依赖,pom.xml配置文件如下:com.github.axetkaptcha${kaptcha.version}配置配置类如下importcom.google.code.kaptcha.impl.DefaultKaptcha;importcom.google.code.kaptcha.util.Config;/*。..*//***生成验证码配置**/@ConfigurationpublicclassKaptchaConfig{@BeanpublicDefaultKaptchaproducer(){Propertiesproperties=newProperties();properties.put("kaptcha.border","no");properties.put("kaptcha.textproducer.font.color","black");properties.put("kaptcha.textproducer.char.space","5");配置配置=新配置(属性);DefaultKaptchadefaultKaptcha=newDefaultKaptcha();defaultKaptcha.setConfig(配置);返回defaultKaptcha;}}Controller层Controller层的相关代码如下,通过captcha.jpg请求验证码,设置验证码的文字,并返回相应的图片;验证登录时将使用此文本信息/***登录相关**/@ControllerpublicclassSysLoginController{@AutowiredprivateProducerproducer;@RequestMapping("captcha.jpg")publicvoidcaptcha(HttpServletResponseresponse)throwsIOException{response.setHeader("Cache-Control","no-store,no-cache");response.setContentType("图片/jpeg");//生成文本验证码Stringtext=producer.createText();//生成图片验证码BufferedImageimage=producer.createImage(text);//保存到shirosessionShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY,text);ServletOutputStreamout=response.getOutputStream();ImageIO.write(图片,"jpg",out);}/***Login*/@ResponseBody@RequestMapping(value="/sys/login",method=RequestMethod.POST)publicRlogin(Stringusername,Stringpassword,Stringcaptcha){Stringkaptcha=ShiroUtils.getKaptcha(常量.KAPTCHA_SESSION_KEY);if(!captcha.equalsIgnoreCase(kaptcha)){returnR.error("验证码不正确");}try{Subjectsubject=ShiroUtils.getSubject();UsernamePasswordTokentoken=newUsernamePasswordToken(用户名,密码);主题.登录(令牌);}catch(UnknownAccountExceptione){返回R.error(e.getMessage());}catch(IncorrectCredentialsExceptione){returnR.error("账号或密码错误");}catch(LockedAccountExceptione){returnR.error("账户已被锁定,请联系管理员");}catch(AuthenticationExceptione){returnR.error("账号验证失败");}返回R.ok();}/*...*/}前端页面代码如下

点击刷新
效果图如下js代码如下kaptcha配置表可以通过如以下参数来自自定义验证码配置说明。kaptcha.border是否有边框默认为真。我们可以自己设置yes。nokaptcha.border.color的边框颜色默认为Color.BLACKkaptcha.border.thickness。验证码生成器默认为DefaultKaptchakaptcha.textproducer.impl验证码文本生成器默认为DefaultTextCreatorkaptcha.textproducer.char.string验证码文本字符内容范围默认为abcde2345678gfynmnpwxkaptcha.textproducer.char.length验证码文本字符长度默认为5kaptcha.textproducer。font.names验证码文字字体样式默认为newFont(“Arial”,1,fontSize),newFont(“Courier”,1,fontSize)kaptcha.textproducer.font.size验证码文字字号默认为40kaptcha.textproducer.font.color验证码文本字符颜色默认为Color.BLACKkaptcha.textproducer.char.space验证码文本字符间距默认为2kaptcha.noise.impl验证码噪声生成对象默认为DefaultNoisekaptcha.noise.color验证码噪声颜色默认为Color.BLACKkaptcha.obscurificator。impl验证码样式引擎默认为WaterRipplekaptcha.word.impl验证码文本字符渲染默认为DefaultWordRendererkaptcha.background.impl验证码背景生成器默认为DefaultBackgroundkaptcha.background.clear.from验证码背景颜色渐进默认为Color.LIGHT_GRAYkaptcha.background。clear.to验证码背景色渐进默认为Color.WHITEkaptcha.image.width验证码图宽度默认200kaptcha.image.height验证码图片高度默认50kaptcha.session.keysession存储验证码的key参考官网java实现登录验证码(kaptcha验证码组件)