netcore 生成驗(yàn)證碼的過程詳解
安裝依賴
Install-Package Lazy.Captcha.Core
注冊服務(wù)
builder.Services.AddCaptcha();
自定義注冊服務(wù)
// 注冊服務(wù)的時候增加配置 services.AddCaptcha(Configuration, option => { option.CaptchaType = CaptchaType.WORD; // 驗(yàn)證碼類型 option.CodeLength = 6; // 驗(yàn)證碼長度, 要放在CaptchaType設(shè)置后. 當(dāng)類型為算術(shù)表達(dá)式時,長度代表操作的個數(shù) option.ExpirySeconds = 30; // 驗(yàn)證碼過期時間 option.IgnoreCase = true; // 比較時是否忽略大小寫 option.StoreageKeyPrefix = ""; // 存儲鍵前綴 option.ImageOption.Animation = true; // 是否啟用動畫 option.ImageOption.FrameDelay = 30; // 每幀延遲,Animation=true時有效, 默認(rèn)30 option.ImageOption.Width = 150; // 驗(yàn)證碼寬度 option.ImageOption.Height = 50; // 驗(yàn)證碼高度 option.ImageOption.BackgroundColor = SkiaSharp.SKColors.White; // 驗(yàn)證碼背景色 option.ImageOption.BubbleCount = 2; // 氣泡數(shù)量 option.ImageOption.BubbleMinRadius = 5; // 氣泡最小半徑 option.ImageOption.BubbleMaxRadius = 15; // 氣泡最大半徑 option.ImageOption.BubbleThickness = 1; // 氣泡邊沿厚度 option.ImageOption.InterferenceLineCount = 2; // 干擾線數(shù)量 option.ImageOption.FontSize = 36; // 字體大小 option.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; // 字體 /* * 中文使用kaiti,其他字符可根據(jù)喜好設(shè)置(可能部分轉(zhuǎn)字符會出現(xiàn)繪制不出的情況)。 * 當(dāng)驗(yàn)證碼類型為“ARITHMETIC”時,不要使用“Ransom”字體。(運(yùn)算符和等號繪制不出來) */ option.ImageOption.TextBold = true;// 粗體,該配置2.0.3新增 });
提供一個生成驗(yàn)證碼和校驗(yàn)的接口
/// <summary> /// 生成驗(yàn)證碼 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpGet] public IActionResult Captcha(string id) { var info = _captcha.Generate(id); // 有多處驗(yàn)證碼且過期時間不一樣,可傳第二個參數(shù)覆蓋默認(rèn)配置。 //var info = _captcha.Generate(id,120); var stream = new MemoryStream(info.Bytes); return File(stream, "image/gif"); } /// <summary> /// 驗(yàn)證驗(yàn)證碼是否輸入正確 /// </summary> [HttpGet] public bool Validate(string id, string code) { return _captcha.Validate(id, code); }
前端部分
<div class="text-center"> <img id="captchaImage" src="" alt="Captcha Image" /> <input type="text" id="captchaInput" placeholder="Enter the captcha code" /> <button id="validateButton">Validate</button> <div id="resultMessage"></div> </div> <script> document.addEventListener('DOMContentLoaded', function () { var guid = generateUUIDv4(); // 加載驗(yàn)證碼圖片 loadCaptcha(); // 監(jiān)聽驗(yàn)證按鈕點(diǎn)擊事件 document.getElementById('validateButton').addEventListener('click', validateCaptcha); // 點(diǎn)擊圖片刷新驗(yàn)證碼 document.getElementById('captchaImage').addEventListener('click', captchaImageClick); async function captchaImageClick() { //刷新GUID guid = generateUUIDv4(); // 重新加載驗(yàn)證碼 loadCaptcha(); } async function loadCaptcha() { try { const response = await fetch('/home/Captcha?id=' + guid); const blob = await response.blob(); const imageUrl = URL.createObjectURL(blob); document.getElementById('captchaImage').src = imageUrl; } catch (error) { console.error('Failed to load captcha:', error); } } async function validateCaptcha() { const input = document.getElementById('captchaInput').value; const response = await fetch('/home/Validate?id=' + guid + "&code=" + input); const data = await response.json(); const messageElement = document.getElementById('resultMessage'); if (data) { messageElement.textContent = 'Captcha is correct!'; messageElement.style.color = 'green'; } else { messageElement.textContent = 'Incorrect captcha. Please try again.'; messageElement.style.color = 'red'; //刷新GUID guid = generateUUIDv4(); // 重新加載驗(yàn)證碼 loadCaptcha(); } } function generateUUIDv4() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } }); </script>
代碼地址:GitHub - maoyuan6/verificationcode: 驗(yàn)證碼
到此這篇關(guān)于netcore 生成驗(yàn)證碼的文章就介紹到這了,更多相關(guān)netcore 生成驗(yàn)證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.net Substitution 頁面緩存而部分不緩存的實(shí)現(xiàn)方法
在ASP.NET中要實(shí)現(xiàn)部分內(nèi)容非緩存,而其它的都需要緩存輸出,可以使用Substitution控件實(shí)現(xiàn).2009-03-03淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient
這篇文章主要介紹了淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04Asp.net通過SignalR2進(jìn)行實(shí)時聊天
這篇文章介紹了Asp.net通過SignalR2進(jìn)行實(shí)時聊天的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05詳解VS2017 Linux 上.NET Core調(diào)試
這篇文章主要介紹了詳解VS2017 Linux 上.NET Core調(diào)試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證,感興趣的小伙伴們可以參考一下2016-07-07asp.net生成Excel并導(dǎo)出下載五種實(shí)現(xiàn)方法
有關(guān)Excel下載的文章網(wǎng)上想必有很多,利用閑暇時間整理了一些有Excel下載方法的文章,接下來介紹五種實(shí)現(xiàn)Excel下載的方法,感興趣的朋友可以了解下,或許對你學(xué)習(xí)Excel下載有所幫助2013-02-02ASP.NET簡化編輯界面解決思路及實(shí)現(xiàn)代碼(2)
這篇與前一篇改進(jìn)部分,也許大家會留意到動畫演示,主要是GridVeiw的更新與刪除會在每row都有。因此Insus.NET把它抽取出來,放在GridView外,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01