开源.NetCore通用工具库Xmtool使用连载 - 图形验证码篇
【Github源码】
《上一篇》 介绍了Xmtool工具库中的Web操作类库,今天我们继续为大家介绍其中的图形验证码类库。
图形验证码是为了抵御恶意攻击出现的一种设计;例如用户登录、修改密码等场景。在本类库中,将图形验证码的逻辑进行了抽象封装,能够通过同一套方法使用不同类型的图形验证码;让增加图形验证码逻辑变得更方便友好,且切换不同类型的图形验证码更简易。
使用时,需要先获取图形验证码类库对象:
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character); // 字符验证码
// 或者
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Sliding); // 滑块验证码
ICaptcha接口提供了配置、生成和校验 3 个方法,通过这 3 个方法可以很方便的将图形验证码能力嵌入到自己的软件功能中。
1. Config方法
public ICaptcha Config(CaptchaOption option);
说明:配置图形验证码生成规则,根据图形验证码不同的类型,需传入不同的参数配置类。
参数:
option:生成参数配置;字符验证码使用CharacterCaptchaOption配置类,滑块验证码使用SlidingCaptchaOption配置类。
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);
CharacterCaptchaOption option = new CharacterCaptchaOption();
option.BackColor = Color.Blue;
option.BorderColor = Color.DarkBlue;
captcha.Config(option);
// TODO
2. Generate方法
public CaptchaResult Generate(CaptchaData data = null);
说明:根据参数配置生成图形验证码图片及相关数据。
参数:
data:生成数据设定,默认不设置将随机生成;字符验证码使用CharacterCaptchaData类,滑块验证码使用SlidingCaptchaData类。
返回:
将返回生成的图片数据(Base64格式)和相关校验性数据。
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);
CharacterCaptchaData data = new CharacterCaptchaData();
data.Code = "1234";
CaptchaResult result = captcha.Generate(data);
// TODO
3. Validate方法
public bool Validate(object source, object input);
说明:将用户输入信息和生成数据进行对比,判断图形验证码输入或操作是否正确。
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);
CaptchaResult result = captcha.Generate();
bool ok = captcha.Validate(result.ValidationData, "用户输入数据");
if (ok)
{
// TODO
}
4. Type属性
说明:返回当前实例的验证码类型,CaptchaKind.Character(字符验证码)或CaptchaKind.Sliding(滑块验证码)。
附加说明
一、CharacterCaptchaOption类
该类用于为字符图形验证码设置生成过程的一些配置信息。
1. Length属性
说明:设置字符验证码的个数,默认6个字符。
2. OnlyNumber属性
说明:生成的字符验证码是否只包含数字,默认为true;否则包含数字和英文字母。
3. Width属性
说明:设置字符验证码整体图片的宽度,默认300。
4. Height属性
说明:设置字符验证码整体图片的高度,默认120。
5. BackColor属性
说明:设置字符验证码整体图片的背景颜色,默认白色。
6. Bordercolor属性
说明:设置字符验证码整体图片的边框颜色,默认浅灰。
二、SlidingCaptchaOption类
该类用于为滑块验证码设置生成过程的一些配置信息。
1. BackgroundDir属性
说明:设置滑块验证码背景图片的存放目录。
2. ResultError属性
说明:设置滑块验证码校验时允许的位置偏差百分比,默认0.02。
三、CharacterCaptchaData类
该类用于设置生成字符验证码内容的指定。
1. Code属性
说明:字符验证码默认随机生成字符内容,通过该属性可以指定生成内容。
四、SlidingCaptchaData类
该类用于设置生成滑块验证码的规格信息。
1. GapX属性
说明:滑块凹槽生成的横向坐标位置,默认随机生成。
2. GapY属性
说明:滑块凹槽生成的纵向坐标位置,默认随机生成。
3. GapTemplate属性
说明:滑块凹槽的形状,支持0-4五种形状,默认随机选择。
五、CaptchaResult类
该类用于返回图形验证码生成的具体内容。
1. ValidationData属性
说明:用于图形验证码进行校验的数据。字符验证码是字符验证码生成的字符内容;滑块验证码是凹槽横向坐标和图片整体宽度的百分数。该数据即是使用Validate方法时的souce参数。
2. DisplayData属性
说明:图形验证码生成图片数据,以Base64图片格式返回,可以直接复制到浏览器地址栏查看。字符验证码直接返回图片数据内容;滑块验证码返回包括图片的宽度、高度、背景图片数据内容、滑块图片的宽度、高度、滑块图片的数据内容,中间使用“|”分隔。
【Github源码】
开源.NetCore通用工具库Xmtool使用连载 - 图形验证码篇的更多相关文章
- 开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇
[Github源码] <上一篇>详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库. 在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密 ...
- Net Core 生成图形验证码
1. NetCore ZKweb 在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考 public byte[] GetVerifyCode(out string ...
- 一百一十四:CMS系统之图形验证码生成
安装Pillow库,用于生成图形验证码:pip install Pillow 字体文件来源 生成一个验证码图片 import randomimport stringfrom PIL import Im ...
- Django中图形验证码(django-simple-captcha)
django-simple-captcha 在网站开发的登录页面中,经常会需要使用到图形验证码来验证.在Django中,django-simple-captcha库包提供了图形验证码的使用. 下面我们 ...
- Android开源项目及库搜集
TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending,github搜索:https://github.com/ ...
- 开源.NET界面库
一.十大开源的.NET用户界面框架 选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户.好的UI更能吸引用户,有时 ...
- 值得推荐的C/C++开源框架和库
值得推荐的C/C++开源框架和库 转自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webbench是一个在Linux下 ...
- 值得学习的C语言开源项目和库
收集一些C/C++相关的源码,如有更高效的库,请提醒我 补充上去 C/C++相关交流Q群 1414577 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具. ...
- 转载一篇c++开源框架和库
值得学习的C语言开源项目 -1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性 ...
- Android 开源项目及库汇总(2)
Android 开源项目及库汇总(2) ListenToCode 2.7 2018.10.10 15:43 字数 8527 阅读 1001评论 0喜欢 29 地图 百度地图– Android百度地图 ...
随机推荐
- Cesium开发案例整理
weigis近几年越来越被人们所关注,但是二三维开发难度也比普通web要高出许多,不管我们是在在开发或者是学习过程中,往往需要耗费大量的时间去查阅资料,和研究官方案例, 而大多二三维的包(openla ...
- Java的Atomic原子类
Java SDK 并发包里提供了丰富的原子类,我们可以将其分为五个类别,这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类. 对基本数据类型的变量值进行原子更新: 对对象变量的指向进行原子 ...
- 代码随想录算法训练营Day31 贪心算法| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II
代码随想录算法训练营 122.买卖股票的最佳时机II 题目链接:122.买卖股票的最佳时机II 给定一个数组,它的第 i个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润. ...
- Linux下程序时间消耗监控与统计
良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序计时产 ...
- python里class(类)中object是什么意思
python的class(类)中的object是什么意思? 写object和不写object有什么区别? 示例代码 class Test: name = "libai" class ...
- C# 版本特性一览
前言 使用 C# 作为开发语言已经 15 个年头了,受惠于 C# 的不断更新,伴随着大量的新特性与大量语法糖,让我更加容易写出简洁.高效的代码.日常中大量特性早已信手拈来,当然从未尝试过的特性更是难以 ...
- 驱动开发:内核封装WFP防火墙入门
WFP框架是微软推出来替代TDIHOOK传输层驱动接口网络通信的方案,其默认被设计为分层结构,该框架分别提供了用户态与内核态相同的AIP函数,在两种模式下均可以开发防火墙产品,以下代码我实现了一个简单 ...
- Nginx使用Lua脚本加解密RSA字符串
本文主要介绍使用Lua脚本对采用RSA加密后的字符串进行解密的过程. 使用第三方类库lua-resty-rsa,参考地址:https://github.com/spacewander/lua-rest ...
- Web网页音视频通话之Webrtc相关操作(二)
效果图 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 2023年郑州轻工业大学校赛邀请赛mjh
首先,很感谢老师的信任,选择我去参加此次比赛:其次,感谢wh,wyh两位队友的全程带飞.此次比赛是我第一次参加线下的比赛活动,内心难免激动与紧张. 比赛开始,队友直接找到了签到题进行解答,而我拿到了看 ...