开源.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百度地图 ...
随机推荐
- adb知识
一.原理: adb客户端:能够对adb服务下发指令或命令的工具 server服务端:adb.exe执行之后的进程,表示adb的服务端,通过服务端与手机上的adb守护进程进行通信 adb守护进程 : 随 ...
- Galaxy 生信平台(四):邮件与管理员配置
前几天看到中山大学和国家基因库合作开发的 Translatome Workbench 翻译组学可视化在线数据分析平台 (db.cngb.org/galaxy/) 的推送信息,也上去看了一下,工具和教程 ...
- PostgreSQL 12 文档: 部分 II. SQL 语言
部分 II. SQL 语言 这部份描述在PostgreSQL中SQL语言的使用.我们从描述SQL的一般语法开始,然后解释如何创建保存数据的结构.如何填充数据库以及如何查询它.中间的部分列出了在SQL命 ...
- kafka入门必备知识
1. Kafka是一个分布式流处理平台: 可以让你发布和订阅流式的记录.这一方面与消息队列或者企业消息系统类似. 可以储存流式的记录,并且有较好的容错性. 可以在流式记录产生时就进行处理. 2. 消息 ...
- Python中使用支付宝支付
准备 # 支付宝文档 https://opendocs.alipay.com/open/270/105898?pathHash=b3b2b667 # 在沙箱环境下实名认证 https://openho ...
- kubernetes(k8s):解决不在同一网段加入集群失败问题
执行下面命令,将内外网进行映射. iptables -t nat -A OUTPUT -d 10.140.128.121 -j DNAT --to-destination 10.170.129.153 ...
- 深度学习(四)——torchvision中数据集的使用
一. 科研数据集 下载链接: https://pytorch.org/vision/stable/index.html 本文中我们使用的是\(CIFAR\)数据集 二.CIFAR10数据集详解 具体网 ...
- gin 接口开发 - 用户输入自动 TrimSpace
最近在思考一个问题,针对用户的输入,能不能快速校验? 比方说下面的 struct,大家用过 gin 的就知道,支持指定某个字段为 required,用户如果不输入,就检验不通过. type Login ...
- 【持续更新】C++ 并不完全是 C 的超集!
一些容易被忽略的 C 与 C++ 的不兼容特性 头文件和命名空间 C 标准库头文件名在 C++ 中通常去除扩展名,并加上 c 前缀,如: stdio.h -> cstdio stdlib.h - ...
- Linux 压缩文件用法
# tar 命令:可以用来压缩或解压缩文件: # 压缩 tar -czvf filename.tar.gz files # 解压缩 tar -xzvf filename.tar.gz # gzip 命 ...