设为首页 加入收藏

TOP

谷歌captcha图形验证码开发
2023-08-06 07:50:02 】 浏览:69
Tags:谷歌 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());
            }
    
        }
    }
    
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇接口隔离原则 下一篇spring启动流程 (6完结) springmv..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目