kaptcha 验证码漂亮的配置_图形验证码kaptcha在springboot下使用

本文介绍了如何在SpringBoot应用中利用kaptcha Starter包轻松集成和使用图形验证码。通过引入starter包,配置application.yml,然后通过@Autowired注解即可方便地调用kaptcha的生成和验证方法。文章特别提醒在验证时要注意异常处理,因为validate方法的错误会抛出异常。
摘要由CSDN通过智能技术生成

众所周知,开源的图形验证码kaptcha已经广泛使用多年了,随着springboot的发展壮大,kaptcha也有了基于springboot的starter模式,这让kaptcha的使用更加的简单,下面就介绍一下如何使用kaptcha starter包来快速实现图形验证码。

引入starter包

kaptcha最早是以jar包的方式发行的,如果要使用就要引入一系列的包,而且要遵循规范引入xml的配置,并且要bean化,虽然步骤不多,但是也比较繁杂一些,自从springboot使用了starter模式,就让这些工作来的更为简单。首先在要使用kaptcha的工程中引入kaptcha的starter包。

        com.baomidou            kaptcha-spring-boot-starter            1.1.0

配置kaptcha

starter模式的配置是和工程主体配置一体化的,也就是放置到application.yml中,相关参数和原先的kaptcha一致,不在多述。

#图形验证码配置kaptcha:  height: 50  width: 200  content:    length: 4    source: 0123456789abcdefghijklmnopqrstuvwxyz    space: 2  font:    color: blue    name: 宋体,楷体,微软雅黑    size: 40  background-color:    from: lightGray    to: white  border:    enabled: true    color: black    thickness: 1

开始使用

通过@Autowired注解kaptcha就可以直接使用了。

@Autowiredprivate Kaptcha kaptcha;

kaptcha只提供了三个方法:

1. 生成验证码render();

@GetMapping("/render")    @ApiOperation(value = "获取图形验证码", notes = "图形验证")    public void render() {        kaptcha.render();    }

2. 输入码验证

@PostMapping("/valid")    @ApiOperation(value = "图形验证码验证", notes = "图形验证")    @ApiImplicitParams({            @ApiImplicitParam(paramType = "query", name = "code", value = "输入验证码", dataType = "String")    })    public ResponseData validDefaultTime(@RequestParam String code) {        ResponseData result=new ResponseData();        try {            kaptcha.validate(code);            result.setStatus(ResponseCode.SUCCESS);        }catch (KaptchaIncorrectException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_ERROR);        }catch (KaptchaNotFoundException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_NOTFOUND_ERROR);        }catch (KaptchaRenderException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_RENDER_ERROR);        }catch (KaptchaTimeoutException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_EXPIRED_ERROR);        }        return result;    }

这里强调一下异常处理,validate方法只有验证成功返回true,其他错误都是通过异常暴露的,所以在程序处理的时候要捕获这些异常并进行相关处理。

3. 输入验证码超时设置验证

@PostMapping("/validTime")    @ApiOperation(value = "图形验证码验证,有效期60秒", notes = "图形验证")    @ApiImplicitParams({            @ApiImplicitParam(paramType = "query", name = "code", value = "输入验证码", dataType = "String")    })    public ResponseData validWithTime(@RequestParam String code) {        ResponseData result=new ResponseData();        try {            kaptcha.validate(code,60);            result.setStatus(ResponseCode.SUCCESS);        }catch (KaptchaIncorrectException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_ERROR);        }catch (KaptchaNotFoundException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_NOTFOUND_ERROR);        }catch (KaptchaRenderException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_RENDER_ERROR);        }catch (KaptchaTimeoutException e){            result.setStatus(ResponseCode.GRAPHIC_VERIFICATION_EXPIRED_ERROR);        }        return result;    }

这个方法和2的方法类似,只是增加了超时设置。

前端使用

render
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值