学习C#调用LazyCaptcha模块生成验证码的基本用法

news2024/9/22 5:34:26

  LazyCaptcha是仿EasyCaptcha和SimpleCaptcha的.net开源图形验证码模块,其支持生成验证码及对应的静态图或动态图,还支持在图形中增加气泡、干扰线等噪音以提升图片自动识别难度。LazyCaptcha既能在B/S程序中使用(本文的原由即Admin.NET中使用LazyCaptcha生成验证码及动态图),也可以在C/S程序中调用。本文基于参考文献1-2中附带的Sample.Winfrom项目的源码,学习采用LazyCaptcha模块生成验证码的基本用法。
  生成验证码及对应图片主要使用CaptchaService类,在C/S程序中可以通过CaptchaServiceBuilder类创建并配置CaptchaService类对象示例,示例代码及主要配置说明如下所示:

 	CaptchaServiceBuilder
         .New()
         .CodeLength(options.CodeLength)
         .CaptchaType((CaptchaType)options.CaptchaType)
         .FontFamily(fontFamily)
         .FontSize(options.ImageOption.FontSize)
         .BubbleCount(options.ImageOption.BubbleCount)
         .BubbleThickness(options.ImageOption.BubbleThickness)
         .BubbleMinRadius(options.ImageOption.BubbleMinRadius)
         .BubbleMaxRadius(options.ImageOption.BubbleMaxRadius)
         .InterferenceLineCount(options.ImageOption.InterferenceLineCount)
         .Animation(options.ImageOption.Animation)
         .FrameDelay(options.ImageOption.FrameDelay)
         .Width(options.ImageOption.Width)
         .Height(options.ImageOption.Height)
         .Quality(options.ImageOption.Quality)
         .TextBold(options.ImageOption.TextBold)
         .Build();
序号参数名称参数说明
1CaptchaType设置验证码内容类型,枚举值,主要包括中文汉字、数字、中文数字(小写)、中文数字(大写)、字母大小写、字母小写、字母大写、字母数字小写、字母数字大写、阿拉伯数字运算、中文数字运算等类型。
2CodeLength验证码内容长度,如果是数字运算,则为等号左侧的数字个数(测试时偶尔会出现数字个数小于内容长度的情况,暂时不清楚怎么回事)
3ExpirySeconds验证码过期秒数,生成的验证码要么存在内存中,要么存在Redis内,超出本属性设置的时间后即失效
4IgnoreCase对比验证码时是否忽略大小写
5Animation是否生成gif动态图,为false生成静态图片
6FontSize验证码内容字体大小
7FontFamily验证码内容字体名称,主要包括Actionj、Kaiti、Fresnel、Prefix、Ransom、Scandal、Epilog、Headache、Lexo、Progbot、Robot
8TextBold验证码内容是否加粗
9Width验证码图片宽度
10Height验证码图片高度
11BubbleCount验证码图片中的气泡数量
12BubbleThickness气泡边框厚度
13BubbleMinRadius气泡最小半径
14BubbleMaxRadius气泡最大半径
15InterferenceLineCount验证码图片中的干扰线数量
16FrameDelay生成gif图片时每帧的间隔,单位为毫秒,用此属性也可以计算帧率

  调用CaptchaService.Generate函数创建、存储、返回验证码及图片,调用函数时同步传入唯一标识作与验证码关联,用于存储验证码及后续调用Validate函数验证验证码。
  Generate函数返回CaptchaData类型数据,其中包括验证码唯一标识(传入的标识)、验证码内容(如果是数字运算则返回运算结果)、图片原始内容及Base64编码后的图片内容字符串。
在这里插入图片描述
  如果嫌麻烦,也可以使用默认设置创建CaptchaService对象实例并生成验证码。总体而言,LazyCaptcha使用简单方便,不论网页程序还是客户端程序都能快速集成使用。

参考文献:
[1]https://github.com/pojianbing/LazyCaptcha
[2]https://gitee.com/pojianbing/lazy-captcha/tree/master

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1974153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构初阶】深度理解 “栈” (附源码)

hello,又见面了! 目录 1. 栈的概念与结构 2、栈的实现 Stack.h Stack.c test.c 3、习题 正文开始—— 1. 栈的概念与结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端…

小试牛刀-Telebot区块链游戏机器人(TS升级)

目录 1.编写目的 2.为什么使用TypeScript实现? 3.实现功能 3.1 AI图片生成 3.2 签到 3.3 邀请 3.4 WalletConnect连接 4.功能实现详解 4.1 AI图片生成 4.2 签到 4.3 邀请 4.4 WalletConnect连接 5.功能截图 ​6.问题整理 Welcome to Code Blocks blog 本篇文章主…

塑造美好心灵,激发创造活力|第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展开展

第三届瓷艺中华“陶溪川杯”儿童青少年陶瓷作品展 展览现场 由中央美术学院、景德镇陶瓷大学、景德镇陶文旅控股集团共同主办,由中国非物质文化遗产保护协会陶瓷分会、中国文化艺术发展促进会陶瓷专业委员会、中央美术学院陶瓷艺术研究院、中央美术学院少儿美术教…

无人机无刷电机技术详解及选型

1. 技术原理 无人机无刷电机(Brushless DC Motor, BLDC)是现代无人机动力系统的核心部件,其工作原理基于电磁感应和换向技术,实现了无需物理接触即可持续旋转的高效率动力输出。与传统有刷电机相比,无刷电机通过电子换…

你好! Git——如何进行多人协作

多人协作(5) 一、标签管理二、多人协作2.1 场景一(这种方式不常见)2.2 场景二(常见) 一、标签管理 标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。 …

【给嵌入式新人的几条建议(共勉):三-C语言基础怎么补?】

给嵌入式新人的几条建议(共勉):三-C语言基础怎么补? 前言1、先回答一个问题,对C语言的害怕到底在哪?(纠正认知)2、C语言基础,要补全部吗?No2.1 先看下自己属于…

深耕编程语言18年,对话 Rust、TypeScript、Nushell 核心贡献者 Sophia Turner | Open AGI Forum

作者 | Annie Xu 采访 | 卢威 责编 | Echo Tang 出品丨GOSIM 开源创新汇 编程语言的种类令人眼花缭乱,但成功的、常用的编程语言却是凤毛麟角。在深耕编程语言研发 18 年的 Sophia June Turner 看来,编程语言成功的关键在于其研发团队的透明度和机制建…

Azure OpenAI Embeddings vs OpenAI Embeddings

题意:Azure OpenAI 嵌入与 OpenAI 嵌入的比较 问题背景: Is anyone getting different results from Azure OpenAI embeddings deployment using text-embedding-ada-002 than the ones from OpenAI? Same text, same model, and the results are cons…

Learning vtkjs之Calculator

过滤器 公式计算器 Calculator 介绍 The Calculator filter is a fast way to add derived data arrays to a dataset. These arrays can be defined over points, cells, or just field data that is “uniform” across the dataset (i.e., constant over all of space). Va…

【小尘送书-第十六期】码农职场:IT人求职就业手册

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

【JVM】垃圾回收机制、算法和垃圾回收器

什么是垃圾回收机制 为了让程序员更加专注于代码的实现,而不用过多的考虑内存释放的问题,所以在Java语言中,有了自动的垃圾回收机制,也是我们常常提及的GC(Garbage Collection) 有了这个垃圾回收机制之后,程序员只需…

华为路由常见 LSA 类型的产生及作用域和字段详细解读

华为路由常见 LSA 类型的产生及作用域 类型名称描述1路由器 LSA(Router LSA)每个设备都会产生,描述了设备的链路状态和开销。该 LSA 只能在接口所属的区域内泛洪2网络 LSA(Network LSA)由 DR 产生,描述该 …

在cPanelWHM中如何重置 MySQL 用户帐户密码

更改MySQL用户账户密码非常简单。服务器管理员可以在WHM中编辑任何MySQL用户的帐户。cPanel用户可以编辑其帐户管理的数据库的密码。 在WHM中更改MySQL用户帐户密码 打开WHM,在侧边菜单中的SQL服务下选择“Change MySQLUser Password”。Hostease的服务器产品提供稳…

NeRF学习——复现训练中的问题记录

代码复现的框架是基于:pengsida 的 Learning NeRF 希望各位可以通过学习 NeRF-Pytorch 的源码来自己复现一下试试看! 文章目录 1 Windows bug1.1 DataLoader 的多进程 pickle1.2 imageio 输出图片1.3 I/O 2 训练问题2.1 Evaluate 显存爆炸2.2 尝试一2.…

基于VScode和C++实现Protobuf数据格式的通信

目录 1. Protobuf 概述1.1 定义1.2Protobuf的优势 2. Protobuf 语法3、序列号和反序列化3.1 .pb.h 头文件3.2 序列化3.3 反序列化 4、测试用例 Protobuf详细讲解链接 1. Protobuf 概述 1.1 定义 protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立…

递归题解集

目录 递归: 一、汉诺塔问题 1.题目链接:面试题 08.06. 汉诺塔问题 2.题目描述: 3.解法:(递归) 🌵算法思路: 🌵算法流程: 🌵算法代码&…

掌握SEO站外推广优化的五大绝招

对于网站运营者和数字营销人员来说,SEO站外推广是提升网站流量和排名的重要手段。以下是五个有效的SEO站外推广优化方法,希望对大家有所帮助。 1. 高质量的外链建设 高质量的外部链接(Backlinks)是搜索引擎排名的重要因素之一。…

Openboxes开发环境配置及本地化、API测试

目录 Openboxes简介 开发环境配置及启动 更新中文多语言配置 API测试 Openboxes简介 Openboxes是一款开源的仓库管理软件,提供了库存管理、采购管理、销售管理等功能,可以帮助用户高效地管理仓库及库存。并提供了丰富的API接口。系统基于java8 和Gr…

关于微信,qq小程序的登录,数据库-前端-接口解析

一、背景 当我们在对接微信平台,开发微信小程序时,用户标识是必不可少的。用户标识贯通了整个开发过程,所以获取到唯一的用户标识是必须的。 二、多平台兼容 因为考虑到一次开发,可多端运行,需要考虑兼容多平台兼…