[Hei.Captcha] Asp.Net Core 跨平台验证码实现
寫在前面
說起來比較丟臉。我們有個手機的驗證碼發(fā)送邏輯需要使用驗證碼,這塊本來項目里面就有驗證碼繪制邏輯,.Net Framework的,使用的包是System.Drawing,我把這驗證碼繪制邏輯復制到.Net Core的新項目引用對比包System.Drawing.Common,windows下面驗證碼正常,CentOs下面死活不能正常,像這樣:
(左邊為CentOs運行結果,右為Windows)
依賴庫檢查安裝;
字體檢查安裝;
邏輯檢查;
折騰了一天多放棄了,決定重新寫。
我看了市面上的各種驗證碼,使用第三方的,免費的都有很多限制,并隨時有可能開始收費(用戶量上去后就收費,俗稱“養(yǎng)豬”);
有些比較大平臺的已經(jīng)開始收費或者即將收費(無可厚非,不點名);
視野有限,沒有都一一了解到,如果有免費的,限制又比較少的,使用體驗不錯的第三方驗證碼,歡迎留言~~
綜上,我決定自己繪制
選擇圖片繪制庫
GitHub上面我看到比較多星的是:
SixLabors / ImageSharp
dlemstra / Magick.NET
mono / SkiaSharp
綜合考慮后選擇了:ImageSharp
官方文檔:https://sixlabors.github.io/docs/
成果
Hei.Captcha
一個.net core,跨平臺的驗證碼生成工具包,基于ImageSharp。
中文泡泡驗證碼
字母數(shù)字組合驗證碼
表單Demo
使用
Install-Package Hei.Captcha/// <summary> /// 泡泡中文驗證碼 /// </summary> /// <returns></returns> public IActionResult BubbleCode() {var code = _securityCode.GetRandomCnText(2);var imgbyte = _securityCode.GetBubbleCodeByte(code);return File(imgbyte, "image/png"); }/// <summary> /// 數(shù)字字母組合驗證碼 /// </summary> /// <returns></returns> public IActionResult HybridCode() {var code = _securityCode.GetRandomEnDigitalText(4);var imgbyte = _securityCode.GetEnDigitalCodeByte(code);return File(imgbyte, "image/png"); }高級
參照Demo, 通過修改/豐富應用程序運行目錄./fonts目錄下的字體文件,生成更多不同字體組合的驗證碼。
總結
滑塊驗證碼、點擊選擇驗證碼、軌跡驗證碼等的實現(xiàn)時間成本,技術要求都比較高,并且各種防破解上面可能也需要花很多時間。綜合需求考慮選擇了個性價比比較高的“土味”驗證碼繪制方案;
本驗證碼我自己也沒有去嘗試去破解過,不知道破解難度,有興趣的同學試試,能告訴我結果就最好了[比心]
驗證碼肉眼辨認上面,可能稍難體驗差了點。自己修改下泡泡的數(shù)量,繪制的參數(shù)改改,代碼不多,都有備注。
希望能幫到大家,也希望大家積極PR,豐富驗證碼樣式。
源碼
喜歡留個星~
https://github.com/gebiWangshushu/Hei.Captcha
參考
https://sixlabors.github.io/docs/
文章博客園地址請點擊“閱讀原文”
總結
以上是生活随笔為你收集整理的[Hei.Captcha] Asp.Net Core 跨平台验证码实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net Core中的诊断日志Diagn
- 下一篇: .NET5即至,你准备好了吗?