首先在pom.xml中添加hutool包:

        <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.2.3</version></dependency>

创建验证码类:CreateCaptcha

public class CreateCaptcha  implements OperationStep{private static final Logger logger = LoggerFactory.getLogger(CreateCaptcha.class);@Overridepublic int excute(Operation oper) throws PAIException {// TODO Auto-generated method stubUUID uuid = UUID.randomUUID();  //生成随机字符串uuid//redis中出入的keyString cacheKey = "captcha:".concat(uuid.toString());//获取redis类RedisService redisService = oper.getBean("redisService", RedisService.class);//随机数RandomGenerator randomGenerator = new RandomGenerator("0123456789abcdecghigklmzobqrstuvwsyz", 4);  //生成4个随机数//创建验证码LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(130,45,4,100);lineCaptcha.setGenerator(randomGenerator);lineCaptcha.createCode();//输出到流
//      try {
//          OutputStream out=oper.getResponse().getOutputStream();
//          lineCaptcha.write(out);
//
//          out.flush();
//          out.close();
//      } catch (IOException e) {
//          // TODO Auto-generated catch block
//          e.printStackTrace();
//      }String code=lineCaptcha.getCode();  //获取验证码CaptchaObj captchaoObj=new CaptchaObj();captchaoObj.setKey(uuid.toString());captchaoObj.setCode("data:image/png;base64,"+lineCaptcha.getImageBase64().toString());redisService.put(cacheKey, code,300);  //添加到redis中,5分钟后失效oper.setTranStepSuccResult(captchaoObj);return 0;}@Overridepublic int init(Map<String, String> param) {// TODO Auto-generated method stubreturn 0;}}

验证码校验类:

CheckCaptchaStep

public class CheckCaptchaStep implements OperationStep{private static final Logger logger = LoggerFactory.getLogger(CheckCaptchaStep.class);@Overridepublic int excute(Operation oper) throws PAIException {DataContext dc = oper.getContext();Map<String, Object> input = StepUtils.getInputValue(oper);String codekey=Objects.toString(input.get("codekey").toString(), "");  //获取校验码String cacheKey = "captcha:".concat(codekey);   //获取校验码keyRedisService redisService = oper.getBean("redisService", RedisService.class);   //获取redis类String cacheCode = Objects.toString(redisService.get(cacheKey), "");  //获取redis中的验证码//判断是否有效if (cacheCode.isEmpty()) {oper.setTranStepFailureResult("验证码已失效.", cacheCode);return -1;} else {String kaptchaCode = Objects.toString(input.get("kaptchaCode").toString(), "");if (kaptchaCode.isEmpty()) {oper.setTranStepFailureResult("总线参数名定义错误.", cacheCode);return -1;} else if (!kaptchaCode.equals(cacheCode)) {  //验证码对比oper.setTranStepFailureResult("验证码输入不正确.", kaptchaCode);return -1;} else {redisService.remove(cacheKey);oper.setTranStepSuccResult("验证码校验正确.");return 0;}}}@Overridepublic int init(Map<String, String> param) {// TODO Auto-generated method stubreturn 0;}}

接口配置文件op_captcha.xml代码:

 <operation-cfg><operation id="getcode" name="获取验证码"  type="api" token="false"><step id="getcode" on0Target="return" onOtherTarget="error" class="step.CreateCaptcha"></step></operation><operation id="kaptcha/check" name="验证码校验"  type="api" token="false"><context><Record name="input"><string name="codekey" required="true" desc="唯一值"/><string name="kaptchaCode" required="true" desc="验证码"/></Record></context><step id="insertStep" on0Target="return" onOtherTarget="error" class="step.CheckCaptchaStep"><context><string name="mapSet">input</string></context></step>     </operation></operation-cfg>

生成样式

ajax调用

 function getCode(){$.ajax({type: "post",dataType:"json",url:"http://{}/wtdf/json/getcode",success:function(data){//console.log(data);if(data.errCode==0){var codekey=data.data.key;$("#vercode").attr("src",data.data.code);  //二进制直接赋给src}else{layer.msg("验证码获取错误");}}});}

样式

captcha实现验证码功能相关推荐

  1. 一文搞懂Go整合captcha实现验证码功能

    最近在使用Go语言搞一个用户登录&注册的功能,说到登录&注册相关,我们油然会产生一种增加验证码的想法,因此着手实现,后来在GitHub上找到了这个名叫captcha的插件,于是就利用文 ...

  2. 在TP5使用 captcha 验证码验证码功能

    在TP5使用 captcha 验证码验证码功能 使用composer,安装captcha 1.如果你的电脑没有安装 composer 则先要安装,安装步骤及下载地址 TP5项目中下载,安装compos ...

  3. vue 插件 滑块验证_VUE接入腾讯验证码功能(滑块验证)备忘

    最近在用VUE做个简单的用户系统,登录注册需要验证码,想找个那种拖动的,找geetest居然已经不面向小客户了(或者说只有收费套餐). 腾讯防水墙的验证码免费使用,有2000/小时的免费额度,对于小网 ...

  4. TP5 验证码功能实现(解决点击验证码不更新的问题)

    ThinkPHP5.0 已经很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用. 功能开发 1).引入第三方扩展包 进行 TP5 的开发,Composer 的使用会成为重要技能  以win ...

  5. 图形验证码校验php,ThinkPHP实现生成和校验验证码功能

    使用ThinkPHP实现生成/校验验证码功能,供大家参考,具体内容如下 首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中 ...

  6. .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...

  7. php的验证码要gd库,PHP通过GD库实现验证码功能

    本文实例讲述了PHP通过GD库实现验证码功能,结合实例形式分析了php验证码相关图片绘制.输出操作实现技巧.分享给大家供大家参考,具体如下: 首先看看实现的效果: 具体实现: /*PHP实现验证码*/ ...

  8. 拼图java监听器,Android 简单的实现滑块拼图验证码功能

    实现滑块拼图验证码功能之前已经写过一篇了,上一篇使用的是自定义控件的方式实现这个功能,主要还是想让童鞋们知其然更知其所以然,还没看的童鞋可以先看看Android实现滑块拼图验证码功能这篇. 在项目的开 ...

  9. php mysql设计中验证码的实现_php如何实现验证码功能

    PHP通过GD库实现验证码功能,结合实例形式分析了php验证码相关图片绘制.输出操作实现技巧.分享给大家供大家参考,具体如下: 首先看看实现的效果:(推荐学习:PHP视频教程) 具体实现:<?p ...

最新文章

  1. Obj-C的hello,world 2
  2. 安全牛:“新一代SOC研究报告”之市场指南及技术指南点评
  3. java建造_java建造者模式
  4. 如何使用C或C ++获取目录中的文件列表?
  5. 【Python】Flask框架系列(二):安装、配置文件、增删改查
  6. Charm Bracelet(信息学奥赛一本通-T1294)
  7. [CTO札记]电纸书,将成为教学、阅读潮流
  8. 19n20c的参数_FQB19N20CTM
  9. 牛客多校第五场B generator1(十进制矩阵快速幂)题解
  10. excel实时获取基金信息的实现方法
  11. win10电脑防火墙在哪里设置
  12. 利用专业所学知识获得人生“第一桶金”之路
  13. 电脑出问题解决办法(Win7)
  14. 【解决】Win 10+Visual Studio community 2017,许可证到期,不能登录问题
  15. Stimulsoft Reports.Java 2022.2.3 Crack
  16. vertica基本操作
  17. java 输入一个时间,获取当前周的周一以及周五时间【自然周】
  18. Oracle数据库怎么调大字体,CFree怎么调大字体 设置字体大小的方法
  19. 浅析语音对讲功能在车载监控系统中的应用意义
  20. 最大后验概率估计算法(简单,通俗易懂)

热门文章

  1. Axure RP 9 元件库加载
  2. 合作师专计算机培训,2016年西北师范大学校企合作计算机联合办学建设方案.pdf...
  3. php5.4.45连接mssql2000,sql-server-2000 – 如何从PHP 5.3及更高版本连接到MSSQL 2000
  4. shopnc-b2b2c问题解决方案集锦
  5. CCF CSP认证201403-2 窗口
  6. 三级linux网络管理及应用技术,浙江省大学计算机三级Linux网络管理及应用.doc
  7. 雅马哈与上位机TCP通讯
  8. 基于STM32的智能电子秤设计
  9. python网页爬虫漫画案例_Python爬虫案例:js解密 爬取漫画
  10. MATLAB实验脉冲响应程序,自动控制原理MATLAB仿真实验10-12