【Github源码】

《上一篇》 介绍了Xmtool工具库中的Web操作类库,今天我们继续为大家介绍其中的图形验证码类库。

图形验证码是为了抵御恶意攻击出现的一种设计;例如用户登录、修改密码等场景。在本类库中,将图形验证码的逻辑进行了抽象封装,能够通过同一套方法使用不同类型的图形验证码;让增加图形验证码逻辑变得更方便友好,且切换不同类型的图形验证码更简易。

使用时,需要先获取图形验证码类库对象:

ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);	// 字符验证码
// 或者
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Sliding); // 滑块验证码

ICaptcha接口提供了配置、生成和校验 3 个方法,通过这 3 个方法可以很方便的将图形验证码能力嵌入到自己的软件功能中。

Config方法

Generate方法

Validate方法

Type属性

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使用连载 - 图形验证码篇的更多相关文章

  1. 开源.NetCore通用工具库Xmtool使用连载 - 加密解密篇

    [Github源码] <上一篇>详细介绍了Xmtool工具库中的正则表达式类库,今天我们继续为大家介绍其中的加密解密类库. 在开发过程中我们经常会遇到需要对数据进行加密和解密的需求,例如密 ...

  2. Net Core 生成图形验证码

    1. NetCore ZKweb       在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考      public byte[] GetVerifyCode(out string ...

  3. 一百一十四:CMS系统之图形验证码生成

    安装Pillow库,用于生成图形验证码:pip install Pillow 字体文件来源 生成一个验证码图片 import randomimport stringfrom PIL import Im ...

  4. Django中图形验证码(django-simple-captcha)

    django-simple-captcha 在网站开发的登录页面中,经常会需要使用到图形验证码来验证.在Django中,django-simple-captcha库包提供了图形验证码的使用. 下面我们 ...

  5. Android开源项目及库搜集

    TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending,github搜索:https://github.com/ ...

  6. 开源.NET界面库

    一.十大开源的.NET用户界面框架 选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户.好的UI更能吸引用户,有时 ...

  7. 值得推荐的C/C++开源框架和库

    值得推荐的C/C++开源框架和库  转自:http://www.cnblogs.com/lidabo/p/5514155.html   - 1. Webbench Webbench是一个在Linux下 ...

  8. 值得学习的C语言开源项目和库

    收集一些C/C++相关的源码,如有更高效的库,请提醒我 补充上去 C/C++相关交流Q群 1414577 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具. ...

  9. 转载一篇c++开源框架和库

    值得学习的C语言开源项目 -1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性 ...

  10. Android 开源项目及库汇总(2)

    Android 开源项目及库汇总(2) ListenToCode 2.7 2018.10.10 15:43 字数 8527 阅读 1001评论 0喜欢 29 地图 百度地图– Android百度地图 ...

随机推荐

  1. Abstract Factory Pattern 抽象工厂模式简介与 C# 示例【创建型】【设计模式来了】

    〇.简介 1.什么是抽象工厂模式? 一句话解释:   通过对抽象类和抽象工厂的一组实现,独立出一系列新的操作,客户端无需了解其逻辑直接访问. 抽象工厂模式(Abstract Factory Patte ...

  2. 如何不使用图形来创建ACFS文件系统

    客户需求,提供在19c环境下,ACFS的命令行操作的具体步骤,便于在图形界面不可用场景使用. 当然,如果有图形可操作,还是推荐首选图形,避免复杂度以及不必要的错误. 其实之前有测试过11g环境下的AC ...

  3. CF1477E&大户爱的送分题题解

    CF1477E&大户爱的送分题题解 (CF1477E为我出的校内模拟赛的一道题--<大户爱的送分题>的待修版本) 大户爱的送分题 文件名OhtoAiFirst.cpp/.in/.o ...

  4. 深入探究for...range语句

    1. 引言 在Go语言中,我们经常需要对数据集合进行遍历操作.对于数组来说,使用for语句可以很方便地完成遍历.然而,当我们面对其他数据类型,如map.string 和 channel 时,使用普通的 ...

  5. 1. Spring 简介

    1. Spring 概述 ‍ 官网地址:​https://spring.io/ ‍ Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框 ...

  6. 记一次 .NET 某企业采购平台 崩溃分析

    一:背景 1. 讲故事 前段时间有个朋友找到我,说他们的程序有偶发崩溃的情况,让我帮忙看下怎么回事,针对这种 crash 的程序,用 AEDebug 的方式抓取一个便知,有了 dump 之后接下来就可 ...

  7. Dubbo的高级特性:服务治理篇

    王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 上一篇中,我们已经在Spring Boot应用中集成了Dubbo,并注册了一个服务提供方和一个服务使用方 ...

  8. 在行情一般的情况下,就说说23级应届生如何找java工作

    Java应届生找工作,不能单靠背面试题,更不能在简历中堆砌和找工作关系不大的校园实践经历,而是更要在面试中能证明自己的java相关商业项目经验.其实不少应届生Java求职者不是说没真实Java项目经验 ...

  9. Spring Data MongoDB 使用

    本文为博主原创,转载请注明出处: Spring Data MongoDB 是 Spring Data 系列的一部分,它提供了与 MongoDB 的集成和操作支持,类似于 JPA 对关系型数据库的支持. ...

  10. 【转载】老男孩读PCIe

    目录 老男孩读PCIe之一:从PCIe速度说起 老男孩读PCIe之二:PCIe拓扑结构 老男孩读PCIe之三:PCIe分层结构 老男孩读PCIe之四:TLP类型 老男孩读PCIe之五:TLP结构 老男 ...