zoukankan      html  css  js  c++  java
  • 谷歌验证码工具 Kaptcha 使用

    Kaptcha 简介

    Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:

    • 验证码的字体
    • 验证码字体的大小
    • 验证码字体的字体颜色
    • 验证码内容的范围(数字,字母,中文汉字!)
    • 验证码图片的大小,边框,边框粗细,边框颜色
    • 验证码的干扰线
    • 验证码的样式(鱼眼样式、3D、普通模糊、...)

    Kaptcha 详细配置表

    kaptcha.border 图片边框,合法值:yes , no yes
    kaptcha.border.color 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. black
    kaptcha.image.width 图片宽 200
    kaptcha.image.height 图片高 50
    kaptcha.producer.impl 图片实现类 com.google.code.kaptcha.impl.DefaultKaptcha
    kaptcha.textproducer.impl 文本实现类 com.google.code.kaptcha.text.impl.DefaultTextCreator
    kaptcha.textproducer.char.string 文本集合,验证码值从此集合中获取 abcde2345678gfynmnpwx
    kaptcha.textproducer.char.length 验证码长度 5
    kaptcha.textproducer.font.names 字体 Arial, Courier
    kaptcha.textproducer.font.size 字体大小 40px.
    kaptcha.textproducer.font.color 字体颜色,合法值: r,g,b 或者 white,black,blue. black
    kaptcha.textproducer.char.space 文字间隔 2
    kaptcha.noise.impl 干扰实现类 com.google.code.kaptcha.impl.DefaultNoise
    kaptcha.noise.color 干扰 颜色,合法值: r,g,b 或者 white,black,blue. black
    kaptcha.obscurificator.impl

    图片样式:<br />水纹 com.google.code.kaptcha.impl.WaterRipple <br />

    鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy <br />

    阴影 com.google.code.kaptcha.impl.ShadowGimpy

    com.google.code.kaptcha.impl.WaterRipple
    kaptcha.background.impl 背景实现类 com.google.code.kaptcha.impl.DefaultBackground
    kaptcha.background.clear.from 背景颜色渐变,开始颜色 light grey
    kaptcha.background.clear.to 背景颜色渐变, 结束颜色 white
    kaptcha.word.impl 文字渲染器 com.google.code.kaptcha.text.impl.DefaultWordRenderer
    kaptcha.session.key session key KAPTCHA_SESSION_KEY
    kaptcha.session.date session date KAPTCHA_SESSION_DATE

    用法

    在pom.xml中导入

    <dependency>
        <groupId>com.google.code.kaptcha</groupId>
        <artifactId>kaptcha</artifactId>
        <version>2.3</version>
    </dependency>

    或者

    <dependency>
        <groupId>com.github.penggle</groupId>
        <artifactId>kaptcha</artifactId>
        <version>2.3.2</version>
    </dependency>

    代码实现:

    KaptchaConfig.java
    @Component
    public class KaptchaConfig {
        @Bean
        public DefaultKaptcha getDDefaultKaptcha() {
            DefaultKaptcha dk = new DefaultKaptcha();
            Properties properties = new Properties();
            // 图片边框
            properties.setProperty("kaptcha.border", "yes");
            // 边框颜色
            properties.setProperty("kaptcha.border.color", "105,179,90");
            // 字体颜色
            properties.setProperty("kaptcha.textproducer.font.color", "red");
            // 图片宽
            properties.setProperty("kaptcha.image.width", "110");
            // 图片高
            properties.setProperty("kaptcha.image.height", "40");
            // 字体大小
            properties.setProperty("kaptcha.textproducer.font.size", "30");
            // session key
            properties.setProperty("kaptcha.session.key", "code");
            // 验证码长度
            properties.setProperty("kaptcha.textproducer.char.length", "4");
            // 字体
            properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
            Config config = new Config(properties);
            dk.setConfig(config);
    
            return dk;
        }
    }
    

      

    ValidateCodeController.java
    @Controller
    public class ValidateCodeController {
    
    
        @Autowired
        private KaptchaConfig kaptchaConfig;
        /**
         * 创建验证码
         *
         * @throws Exception
         */
        @GetMapping("/validata/code/{client_id}")
        public void createCode(@PathVariable String client_id, HttpServletResponse response) throws Exception {
            DefaultKaptcha kaptcha = kaptchaConfig.getDDefaultKaptcha();
            Assert.notNull(client_id, "机器码不能为空");
            response.setHeader("Cache-Control", "no-store, no-cache");
            response.setContentType("image/jpeg");
            //生成文字验证码
            String text = kaptcha.createText();
            //生成图片验证码
            BufferedImage image = kaptcha.createImage(text);
            //validateCodeService.saveImageCode(client_id, text);//验证码保存方式根据个人想法实现
            try (
                    ServletOutputStream out = response.getOutputStream()
            ) {
                ImageIO.write(image, "JPEG", out);
            }
        }
    
    }
    

      

    MC❤涛
  • 相关阅读:
    HDU 1078 FatMouse and Cheese(DP)
    HDU 1160 FatMouse's Speed(DP)
    作业DAY019
    作业DAY018
    作业DAY017
    作业DAY016
    作业DAY015
    作业DAY014
    作业DAY013
    作业DAY012
  • 原文地址:https://www.cnblogs.com/aikutao/p/15813874.html
Copyright © 2011-2022 走看看