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();}/*...*/}前端页面代码如下