ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

登录验证码图片

2022-05-26 14:02:16  阅读:165  来源: 互联网

标签:code 登录 kaptcha 验证码 captchaProducer setProperty properties 图片


        <!--验证码-->
        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>

 

    @Bean
    public DefaultKaptcha getDefaultKaptcha() {
        DefaultKaptcha captchaProducer = 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", "blue");
        properties.setProperty("kaptcha.image.width", "220");
        properties.setProperty("kaptcha.image.height", "80");
        properties.setProperty("kaptcha.textproducer.font.size", "40");
        properties.setProperty("kaptcha.session.key", "code");
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅⿊");
        Config config = new Config(properties);
        captchaProducer.setConfig(config);
        return captchaProducer;
    }
    @Autowired
    private Producer captchaProducer;


    @PostMapping("/kaptcha")
    @ApiOperation("获取验证码")
    @Authenticated(false)
    public RestResult getKaptchaImage(@RequestBody KaptchaVO vo) throws Exception {
        StringUtils.isTrueReMsg(vo.getImei()==null,"参数不正确");
        //⽣成验证码
        String capText = captchaProducer.createText();
        redisTemplate.opsForValue().set("imei-kaptcha:"+vo.getImei(),capText);
        //向客户端写出
        BufferedImage bi = captchaProducer.createImage(capText);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        ImageIO.write(bi, "jpg", stream);
        String s = Base64.getEncoder().encodeToString(stream.toByteArray());
        return  RestResult.successData("data:image/jpg;base64,"+s);
    }
        //获取⽣成的验证码
        String verifyCodeExpected=null;
        Object o1 = redisTemplate.opsForValue().get("imei-kaptcha:" + request.getHeader("imei"));
        if(o1!=null){
            verifyCodeExpected=o1.toString();
        }
        String code = loginFormVO.getCode();
        StringUtils.isTrueReMsg(code == null || !code.equals(verifyCodeExpected),"验证码错误");

说明:将生成的验证码存放在redis,生成验证码图片base64给前端展示,登录接口加上验证码参数,进行比对

搜索

复制

<iframe></iframe>

标签:code,登录,kaptcha,验证码,captchaProducer,setProperty,properties,图片
来源: https://www.cnblogs.com/qq376324789/p/16313218.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有