首先在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. jQuery与其它库冲突的解决方法(转)
  2. 亿级流量架构之分布式事务思路及方法
  3. LeetCode 1119. Remove Vowels from a String--C++,Java,Python解法
  4. UI设计师的实际工作流程是什么样的?
  5. Innobackupex实现mysql在线搭建master-slave主从复制
  6. 我的.net程序在linux上运行起啦
  7. pywin32 获取窗口句柄_Excel VBA | 这个窗口居然关不掉
  8. linux编译寻找包含的头文件,Linux编写内核模块编译时找不到头文件
  9. android中画弧函数canvas.drawArc()之理解
  10. 树莓派C语言点灯,树莓派3 b GPIO 点亮小灯泡
  11. Python文件读取(1.1)
  12. R语言作加权最小二乘_超越谷歌BERT!依图预训练语言理解模型入选NeurIPS
  13. TF2.0-tf.keras.callbacks.EarlyStopping
  14. 计算机一级c类题库及答案解析,全国计算机一级考试试题题库及答案
  15. html地图导航代码例子,js 实现百度地图导航例子
  16. 文明与征服北条时宗最强阵容搭配指南
  17. 三角学(一)公式,恒等式,函数和难题
  18. 开始报名啦!——第二届融360“天机”金融风控大数据竞赛火热来袭
  19. 阿里云的免费云虚拟主机
  20. Win11dns异常怎么修复?Win11修复dns异常的三种方法

热门文章

  1. C#实现Socks5服务器
  2. 基于MessageSolution 邮件归档系统EEA的通用型信息泄露漏洞挖洞
  3. 记录自己首次在eclipse中配置tomcat并运行jsp踩过的坑
  4. 2022-2027年中国核电设备市场竞争态势及行业投资前景预测报告
  5. 2023软件库iApp程序源码+有后台管理源码/全新UI简约大气
  6. Unity Android平台 视频播放
  7. 锤子手机能用鸿蒙系统吗,华为:明年初开放手机鸿蒙系统,两年前就可以用,因为安卓才没用...
  8. 破解 Kotlin 协程(6) - 协程挂起篇
  9. 区块链地址是什么?如何获取地址信息 | Tokenview
  10. 音速启动vstart 目录作用详解