captcha实现验证码功能
首先在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实现验证码功能相关推荐
- 一文搞懂Go整合captcha实现验证码功能
最近在使用Go语言搞一个用户登录&注册的功能,说到登录&注册相关,我们油然会产生一种增加验证码的想法,因此着手实现,后来在GitHub上找到了这个名叫captcha的插件,于是就利用文 ...
- 在TP5使用 captcha 验证码验证码功能
在TP5使用 captcha 验证码验证码功能 使用composer,安装captcha 1.如果你的电脑没有安装 composer 则先要安装,安装步骤及下载地址 TP5项目中下载,安装compos ...
- vue 插件 滑块验证_VUE接入腾讯验证码功能(滑块验证)备忘
最近在用VUE做个简单的用户系统,登录注册需要验证码,想找个那种拖动的,找geetest居然已经不面向小客户了(或者说只有收费套餐). 腾讯防水墙的验证码免费使用,有2000/小时的免费额度,对于小网 ...
- TP5 验证码功能实现(解决点击验证码不更新的问题)
ThinkPHP5.0 已经很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用. 功能开发 1).引入第三方扩展包 进行 TP5 的开发,Composer 的使用会成为重要技能 以win ...
- 图形验证码校验php,ThinkPHP实现生成和校验验证码功能
使用ThinkPHP实现生成/校验验证码功能,供大家参考,具体内容如下 首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中 ...
- .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现
前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...
- php的验证码要gd库,PHP通过GD库实现验证码功能
本文实例讲述了PHP通过GD库实现验证码功能,结合实例形式分析了php验证码相关图片绘制.输出操作实现技巧.分享给大家供大家参考,具体如下: 首先看看实现的效果: 具体实现: /*PHP实现验证码*/ ...
- 拼图java监听器,Android 简单的实现滑块拼图验证码功能
实现滑块拼图验证码功能之前已经写过一篇了,上一篇使用的是自定义控件的方式实现这个功能,主要还是想让童鞋们知其然更知其所以然,还没看的童鞋可以先看看Android实现滑块拼图验证码功能这篇. 在项目的开 ...
- php mysql设计中验证码的实现_php如何实现验证码功能
PHP通过GD库实现验证码功能,结合实例形式分析了php验证码相关图片绘制.输出操作实现技巧.分享给大家供大家参考,具体如下: 首先看看实现的效果:(推荐学习:PHP视频教程) 具体实现:<?p ...
最新文章
- jQuery与其它库冲突的解决方法(转)
- 亿级流量架构之分布式事务思路及方法
- LeetCode 1119. Remove Vowels from a String--C++,Java,Python解法
- UI设计师的实际工作流程是什么样的?
- Innobackupex实现mysql在线搭建master-slave主从复制
- 我的.net程序在linux上运行起啦
- pywin32 获取窗口句柄_Excel VBA | 这个窗口居然关不掉
- linux编译寻找包含的头文件,Linux编写内核模块编译时找不到头文件
- android中画弧函数canvas.drawArc()之理解
- 树莓派C语言点灯,树莓派3 b GPIO 点亮小灯泡
- Python文件读取(1.1)
- R语言作加权最小二乘_超越谷歌BERT!依图预训练语言理解模型入选NeurIPS
- TF2.0-tf.keras.callbacks.EarlyStopping
- 计算机一级c类题库及答案解析,全国计算机一级考试试题题库及答案
- html地图导航代码例子,js 实现百度地图导航例子
- 文明与征服北条时宗最强阵容搭配指南
- 三角学(一)公式,恒等式,函数和难题
- 开始报名啦!——第二届融360“天机”金融风控大数据竞赛火热来袭
- 阿里云的免费云虚拟主机
- Win11dns异常怎么修复?Win11修复dns异常的三种方法
热门文章
- C#实现Socks5服务器
- 基于MessageSolution 邮件归档系统EEA的通用型信息泄露漏洞挖洞
- 记录自己首次在eclipse中配置tomcat并运行jsp踩过的坑
- 2022-2027年中国核电设备市场竞争态势及行业投资前景预测报告
- 2023软件库iApp程序源码+有后台管理源码/全新UI简约大气
- Unity Android平台 视频播放
- 锤子手机能用鸿蒙系统吗,华为:明年初开放手机鸿蒙系统,两年前就可以用,因为安卓才没用...
- 破解 Kotlin 协程(6) - 协程挂起篇
- 区块链地址是什么?如何获取地址信息 | Tokenview
- 音速启动vstart 目录作用详解