谷歌captcha图形验证码开发
谷歌captcha图形验证码开发
-
captcha框架:谷歌开源的一个可高度配置的实用验证码生成工具
-
验证码的字体/大小/颜色
-
验证码内容的范围(数字,字母,中文汉字!)
-
验证码图片的大小,边框,边框粗细,边框颜色
-
验证码的干扰线
-
验证码的样式(鱼眼样式、3D、普通模糊)
-
-
依赖引入
<dependency> <groupId>com.baomidou</groupId> <artifactId>kaptcha-spring-boot-starter</artifactId> <version>1.1.0</version> </dependency>
-
CaptchaConfig配置类
@Configuration public class CaptchaConfig { /** * 验证码配置 * captcha配置类名 * @return */ @Bean @Qualifier("captchaProducer") public DefaultKaptcha captcha() { DefaultKaptcha captcha = new DefaultKaptcha(); Properties properties = new Properties(); // properties.setProperty(Constants.KAPTCHA_BORDER, "yes"); // properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, "220,220,220"); // //properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "38,29,12"); // properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, "147"); // properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, "34"); // properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "25"); // //properties.setProperty(Constants.KAPTCHA_SESSION_KEY, "code"); //验证码个数 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); // properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Courier"); //字体间隔 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8"); //干扰线颜色 // properties.setProperty(Constants.KAPTCHA_NOISE_COLOR, "white"); //干扰实现类 properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); //图片样式 properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple"); //文字来源 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789"); Config config = new Config(properties); captcha.setConfig(config); return captcha; } }
-
调用接口
@RestController @RequestMapping("/api") @Slf4j public class CaptchaController { @Autowired @Qualifier("captchaProducer") private Producer captchaProducer; /** * 生成验证码 * @param request * @param response */ @GetMapping("captcha") public void getCaptcha(HttpServletRequest request, HttpServletResponse response){ String captchaProducerText = captchaProducer.createText(); log.info("验证码内容:{}",captchaProducerText); // 验证码图片 BufferedImage bufferedImage = captchaProducer.createImage(captchaProducerText); // 输出流 try { ServletOutputStream outputStream = response.getOutputStream(); ImageIO.write(bufferedImage,"jpg",outputStream); outputStream.flush(); outputStream.close(); } catch (IOException e) { log.error("输出流出错:{}",e.getMessage()); } } }
本文作者:xietingweia
本文链接:https://www.cnblogs.com/xietingwei/p/17558698.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步