LazyCaptcha如何自定义随机验证码和字体
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关LazyCaptcha如何自定义随机验证码和字体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。介绍LazyCaptcha是仿EasyCa
千家信息网最后更新 2025年01月20日LazyCaptcha如何自定义随机验证码和字体
这篇文章将为大家详细讲解有关LazyCaptcha如何自定义随机验证码和字体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
介绍
LazyCaptcha是仿EasyCaptcha和SimpleCaptcha,基于.Net Standard 2.1的图形验证码模块。
目前Gitee 52star, 如果对您有帮助,请不吝啬点颗星????。
一. 自定义随机验证码(需要版本1.1.2)
这里随机是指CaptchaType随机,动静随机等等,你可以设置CaptchaOptions任意选项值。每次刷新验证码,效果如下:
我也不知道这种需求是否真实存在。
1. 自定义RandomCaptcha
////// 随机验证码/// public class RandomCaptcha : DefaultCaptcha{ private static readonly Random random = new(); private static readonly CaptchaType[] captchaTypes = Enum.GetValues(); public RandomCaptcha(IOptionsSnapshot options, IStorage storage) : base(options, storage) { } /// /// 更新选项 /// /// protected override void ChangeOptions(CaptchaOptions options) // 随机验证码类型 options.CaptchaType = captchaTypes[random.Next(0, captchaTypes.Length)]; // 当是算数运算时,CodeLength是指运算数个数 if (options.CaptchaType.IsArithmetic()) { options.CodeLength = 2; } else options.CodeLength = 4; // 如果包含中文时,使用kaiti字体,否则文字乱码 if (options.CaptchaType.ContainsChinese()) options.ImageOption.FontFamily = DefaultFontFamilys.Instance.Kaiti; options.ImageOption.FontSize = 24; options.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; // 动静随机 options.ImageOption.Animation = random.Next(2) == 0; // 干扰线随机 options.ImageOption.InterferenceLineCount = random.Next(1, 4); // 气泡随机 options.ImageOption.BubbleCount = random.Next(1, 4); // 其他选项...}
2. 注入RandomCaptcha
// 内存存储, 基于appsettings.json配置builder.Services.AddCaptcha(builder.Configuration);// 开启随机验证码builder.Services.Add(ServiceDescriptor.Scoped());
二. 自定义字体
使用KG HAPPY字体,效果如图:
1. 寻找字体
你可以通过fontspace找到自己喜爱的字体。
2. 将字体放入项目,并设置为嵌入资源。
当然也可以不作为嵌入资源,放到特定目录也是可以的,只要对下边ResourceFontFamilysFinder稍作修改即可。
3. 定义查找字体帮助类,示例使用ResourceFontFamilysFinder
public class ResourceFontFamilysFinder{ private static Lazy> _fontFamilies = new Lazy
>(() => { var fontFamilies = new List
(); var assembly = Assembly.GetExecutingAssembly(); var names = assembly.GetManifestResourceNames(); if (names?.Length > 0 == true) { var fontCollection = new FontCollection(); foreach (var name in names) { if (!name.EndsWith("ttf")) continue; fontFamilies.Add(fontCollection.Add(assembly.GetManifestResourceStream(name))); } } return fontFamilies; }); public static FontFamily Find(string name) return _fontFamilies.Value.First(e => e.Name == name); }}
4. 设置option
// 内存存储, 基于appsettings.json配置builder.Services.AddCaptcha(builder.Configuration, options =>{ // 自定义字体 options.ImageOption.FontSize = 28; options.ImageOption.FontFamily = ResourceFontFamilysFinder.Find("KG HAPPY"); // 字体的名字在打开ttf文件时会显示});
关于"LazyCaptcha如何自定义随机验证码和字体"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
字体
验证
篇文章
帮助
内存
动静
效果
更多
资源
存储
运算
配置
不错
吝啬
实用
不作为
个数
乱码
内容
可以通过
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
路由dns服务器可能不可用
数据库王珊第5版教学ppt
梦想世界服务器第一
工控网络安全市场
梦幻西游的服务器长啥样
服务器黑匣子
c 数据库登录 存储
最新省市区联动数据库
软件开发系统云容器管理
蓝多多数据库原理实验三
恢复服务器组件管理无法打开
暗黑2重制版和游戏服务器连接
lol为什么服务器出现异常
sql数据库要会数学吗
程序访问远程服务器
运用数据库集群技术
关键岗位网络安全承诺书
家居智能软件开发公司简介
多媒体数据库的层次划分
Python扫码录入数据库
南京移动软件开发工程师
网络安全法遵循积极利用
容错服务器有哪些品牌
软件开发入门用什么app
农村的网络技术有哪些
网络安全设备防火墙ips
广东常见软件开发批发价
txt文件写入数据库实时更新
服务器kvm怎么切换电脑
网络安全填空题