博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Hei.Captcha] Asp.Net Core 跨平台图形验证码实现
阅读量:4354 次
发布时间:2019-06-07

本文共 1312 字,大约阅读时间需要 4 分钟。

1564587704793

写在前面

说起来比较丢脸。我们有个手机的验证码发送逻辑需要使用验证码,这块本来项目里面就有验证码绘制逻辑,.Net Framework的,使用的包是System.Drawing,我把这验证码绘制逻辑复制到.Net Core的新项目引用对应包System.Drawing.Common,windows下面验证码正常,CentOs下面死活不能正常,像这样:

1564588228422

(左边为CentOs运行结果,右为Windows)

  • 依赖库检查安装;
  • 字体检查安装;
  • 逻辑检查;

折腾了一天多放弃了,决定重新写。

我看了市面上的各种验证码,使用第三方的,免费的都有很多限制,并随时有可能开始收费(用户量上去后就收费,俗称“养猪”);

有些比较大平台的已经开始收费或者即将收费(无可厚非,不点名);

视野有限,没有都一一了解到,如果有免费的,限制又比较少的,使用体验不错的第三方验证码,欢迎留言~~

综上,我决定自己绘制

选择图片绘制库

GitHub上面我看到比较多星的是:

综合考虑后选择了:ImageSharp

官方文档:

成果

Hei.Captcha

一个.net core,跨平台的验证码生成工具包,基于。

中文泡泡验证码

img

1564563919705

1564563740706

字母数字组合验证码

img

1564563801717

1564563816361

1564563853298

1564563877047

表单Demo

1564564569409

使用

Install-Package Hei.Captcha
/// /// 泡泡中文验证码 /// /// 
public IActionResult BubbleCode(){ var code = _securityCode.GetRandomCnText(2); var imgbyte = _securityCode.GetBubbleCodeByte(code); return File(imgbyte, "image/png");}/// /// 数字字母组合验证码/// ///
public IActionResult HybridCode(){ var code = _securityCode.GetRandomEnDigitalText(4); var imgbyte = _securityCode.GetEnDigitalCodeByte(code); return File(imgbyte, "image/png");}

高级

参照Demo, 通过修改/丰富应用程序运行目录./fonts目录下的字体文件,生成更多不同字体组合的验证码。

总结

滑块验证码、点击选择验证码、轨迹验证码等的实现时间成本,技术要求都比较高,并且各种防破解上面可能也需要花很多时间。综合需求考虑选择了个性价比比较高的“土味”验证码绘制方案;

本验证码我自己也没有去尝试去破解过,不知道破解难度,有兴趣的同学试试,能告诉我结果就最好了[比心]

验证码肉眼辨认上面,可能稍难体验差了点。自己修改下泡泡的数量,绘制的参数改改,代码不多,都有备注。

希望能帮到大家,也希望大家积极PR,丰富验证码样式。

源码

喜欢留个星~

参考

转载于:https://www.cnblogs.com/xiaxiaolu/p/11280000.html

你可能感兴趣的文章
JavaScript BOM加载事件
查看>>
Java复习总结——详细理解Java反射机制
查看>>
Navicat for MySQL10.1.7注册码
查看>>
Proxy模式
查看>>
读书多些会怎样
查看>>
浏览器好用的技术
查看>>
HDU 2188------巴什博弈
查看>>
tp5任务队列使用supervisor常驻进程
查看>>
Xmind?
查看>>
spring+quartz 实现定时任务三
查看>>
day2-三级菜单
查看>>
java retry_java里面的retry:
查看>>
linux下升级4.5.1版本gcc
查看>>
Beanutils
查看>>
FastJson
查看>>
excel4j
查看>>
Thread
查看>>
HtmlEmail
查看>>
ThreadLocal
查看>>
线程池
查看>>