天天看點

Kaptcha 驗證碼架構使用

基于springboot 驗證碼架構kaptcha使用

一、統一步驟引入maven坐标

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

二、配置驗證碼生成規則并将架構實作類導入Spring容器

@Bean
    public DefaultKaptcha getDefaultKaptcha() {
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        // 圖檔邊框,合法值yes,no,預設值yes
        properties.setProperty("kaptcha.border", "no");
        // 邊框顔色,合法值rgb(and optional alpha)或者 white,black,blue,預設值black
        properties.setProperty("kaptcha.border.color", "105,179,90");
        // 邊框厚度,合法值>0,預設值為1
        properties.setProperty("kaptcha.border.color", "2");
        // 圖檔寬度,預設值200
        properties.setProperty("kaptcha.image.width", "200");
        // 圖檔高度,預設值50
        properties.setProperty("kaptcha.image.height", "50");
        // 驗證碼長度,預設值為5
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        // 字型,預設值Arial, Courier(如果使用中文驗證碼,則必須使用中文的字型,否則出現亂碼)
        properties.setProperty("kaptcha.textproducer.font.names", "宋體,楷體,微軟雅黑");
        // 字型顔色,合法值: r,g,b 或者 white,black,blue,預設值black
        properties.setProperty("kaptcha.textproducer.font.color", "black");
        // 字型大小,預設值為40px
        properties.setProperty("kaptcha.textproducer.font.size", "40");
        // 文字間隔,預設值為2
        properties.setProperty("kaptcha.textproducer.char.space", "3");
        // 幹擾 顔色,合法值: r,g,b 或者 white,black,blue,預設值black
        properties.setProperty("kaptcha.noise.color", "blue");
        // 水紋com.google.code.kaptcha.impl.WaterRipple
        // 魚眼com.google.code.kaptcha.impl.FishEyeGimpy
        // 陰影com.google.code.kaptcha.impl.ShadowGimpy
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
        // 背景顔色漸變,開始顔色,預設值lightGray/192,193,193
        properties.setProperty("kaptcha.background.clear.from", "255,255,255");
        // 背景顔色漸變, 結束顔色,預設值white
        properties.setProperty("kaptcha.background.clear.to", "white");
        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }
           

三、編寫controller

@Controller
public class VerifyCodeController {

    @Autowired
    DefaultKaptcha defaultKaptcha;

    @RequestMapping("/verifyCode")
    public void verifyCode(HttpServletResponse httpServletResponse) throws IOException {
        // 擷取字元串驗證碼
        String verifyCodeStr = defaultKaptcha.createText();
        // 通過字元串驗證碼生成圖檔驗證碼
        BufferedImage verifyCodeImage = defaultKaptcha.createImage(verifyCodeStr);
        // 設定響應頭
        httpServletResponse.setHeader("Cache-Control", "no-store");
        httpServletResponse.setHeader("Pragma", "no-cache");
        httpServletResponse.setContentType("image/jpeg");
        ServletOutputStream ops = httpServletResponse.getOutputStream();
        // 将驗證碼寫出浏覽器
        ImageIO.write(verifyCodeImage, "jpg", ops);
    }
}
           

生成的驗證碼效果:

Kaptcha 驗證碼架構使用

四、以下是驗證碼生成規則配置表。

Constant 描述 預設值
kaptcha.border 圖檔邊框,合法值:yes , no yes
kaptcha.border.color 邊框顔色,合法值: r,g,b (and optional alpha) 或者 white,black,blue black
kaptcha.border.thickness 邊框厚度,合法值:>0 1
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 圖檔樣式: 水紋com.google.code.kaptcha.impl.WaterRipple 魚眼com.google.code.kaptcha.impl.FishEyeGimpy陰影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