最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

netcore 生成驗證碼的過程詳解

 更新時間:2024年06月21日 10:46:37   作者:Session_MY  
這篇文章主要介紹了netcore 生成驗證碼的過程詳解,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧

安裝依賴

Install-Package Lazy.Captcha.Core

注冊服務(wù)

builder.Services.AddCaptcha();

自定義注冊服務(wù)

// 注冊服務(wù)的時候增加配置
services.AddCaptcha(Configuration, option =>
{
    option.CaptchaType = CaptchaType.WORD; // 驗證碼類型
    option.CodeLength = 6; // 驗證碼長度, 要放在CaptchaType設(shè)置后.  當類型為算術(shù)表達式時,長度代表操作的個數(shù)
    option.ExpirySeconds = 30; // 驗證碼過期時間
    option.IgnoreCase = true; // 比較時是否忽略大小寫
    option.StoreageKeyPrefix = ""; // 存儲鍵前綴
    option.ImageOption.Animation = true; // 是否啟用動畫
    option.ImageOption.FrameDelay = 30; // 每幀延遲,Animation=true時有效, 默認30
    option.ImageOption.Width = 150; // 驗證碼寬度
    option.ImageOption.Height = 50; // 驗證碼高度
    option.ImageOption.BackgroundColor = SkiaSharp.SKColors.White; // 驗證碼背景色
    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)繪制不出的情況)。
        * 當驗證碼類型為“ARITHMETIC”時,不要使用“Ransom”字體。(運算符和等號繪制不出來)
        */
    option.ImageOption.TextBold = true;// 粗體,該配置2.0.3新增
});

提供一個生成驗證碼和校驗的接口

    /// <summary>
    /// 生成驗證碼
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    [HttpGet]
    public IActionResult Captcha(string id)
    {
        var info = _captcha.Generate(id);
        // 有多處驗證碼且過期時間不一樣,可傳第二個參數(shù)覆蓋默認配置。
        //var info = _captcha.Generate(id,120);
        var stream = new MemoryStream(info.Bytes);
        return File(stream, "image/gif");
    }
    /// <summary>
    /// 驗證驗證碼是否輸入正確
    /// </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();
        // 加載驗證碼圖片
        loadCaptcha();
        // 監(jiān)聽驗證按鈕點擊事件
        document.getElementById('validateButton').addEventListener('click', validateCaptcha);
        // 點擊圖片刷新驗證碼
        document.getElementById('captchaImage').addEventListener('click', captchaImageClick);
        async function captchaImageClick() {
            //刷新GUID
            guid = generateUUIDv4();
            // 重新加載驗證碼
            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();
                // 重新加載驗證碼
                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: 驗證碼

到此這篇關(guān)于netcore 生成驗證碼的文章就介紹到這了,更多相關(guān)netcore 生成驗證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VS2015 搭建Asp.net core開發(fā)環(huán)境的方法

    VS2015 搭建Asp.net core開發(fā)環(huán)境的方法

    最近想在vs2015體驗下.net core,折騰了兩天終于把環(huán)境弄好了。下面這篇文章就給大家分享下我的搭建過程,有需要的朋友們可以參考學習,下面來一起看看吧。
    2016-12-12
  • .NET使用Moq進行單元測試

    .NET使用Moq進行單元測試

    這篇文章介紹了.NET使用Moq進行單元測試的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Asp.net 頁面導航的幾種方法與比較 分享

    Asp.net 頁面導航的幾種方法與比較 分享

    在ASP.NET應(yīng)用中,Web表單之間的導航有多種方式:用超級鏈接,用Response.Redirect,用Server.Transfer,或者用Server.Execute。本文將分析這四種導航方式的異同及其優(yōu)缺點,幫助你選擇最佳的導航方式。
    2013-07-07
  • ASP.NET 中文顯示之兩種解決方法

    ASP.NET 中文顯示之兩種解決方法

    作者剛開始寫ASP+程序時候碰到的第一個比較大的問題就是中文顯示問題,運行后發(fā)現(xiàn)ASP+從數(shù)據(jù)庫中讀出來的中文全部變成了?????,有點類似jsp中的這個頻率出現(xiàn)最高的中文顯示問題了,查了資料發(fā)現(xiàn)有種方法可以輕松解決中文問題。
    2008-05-05
  • ASP.NET 2.0服務(wù)器控件開發(fā)之復雜屬性

    ASP.NET 2.0服務(wù)器控件開發(fā)之復雜屬性

    ASP.NET 2.0服務(wù)器控件開發(fā)之復雜屬性...
    2006-09-09
  • asp.net 頁面之間傳遞參數(shù)的幾種方法

    asp.net 頁面之間傳遞參數(shù)的幾種方法

    因為在項目中需要在兩個頁面之間傳遞一些參數(shù),所以總結(jié)出以下幾個傳遞參數(shù)的方法
    2009-06-06
  • .NET Runtime 是什么及主要功能

    .NET Runtime 是什么及主要功能

    .NET Runtime 是運行 .NET 應(yīng)用程序的核心組件,它提供了應(yīng)用程序運行所需的底層支持,比如內(nèi)存管理、類型系統(tǒng)、垃圾回收、線程管理等,這篇文章主要介紹了.NET Runtime 是什么,需要的朋友可以參考下
    2024-12-12
  • asp.net利用存儲過程實現(xiàn)模糊查詢示例分享

    asp.net利用存儲過程實現(xiàn)模糊查詢示例分享

    這篇文章主要介紹了asp.net利用存儲過程實現(xiàn)模糊查詢的示例,大家參考使用吧
    2014-01-01
  • asp.net mvc驗證碼類使用

    asp.net mvc驗證碼類使用

    這篇文章主要為大家詳細介紹了asp.net mvc驗證碼類使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 淺析如何在?ASP.NET?Core中實現(xiàn)速率限制

    淺析如何在?ASP.NET?Core中實現(xiàn)速率限制

    在?ASP.NET?Core?中實現(xiàn)速率限制(Rate?Limiting)中間件可以幫助你控制客戶端對?API?的請求頻率,防止濫用和過載,下面我們就來看看具體實現(xiàn)方法吧
    2025-01-01

最新評論

黄龙县| 松溪县| 馆陶县| 株洲市| 泗阳县| 富川| 综艺| 阿拉善右旗| 宁晋县| 景德镇市| 江口县| 平乡县| 桐庐县| 澜沧| 东丰县| 鞍山市| 兴城市| 屏东市| 鹤岗市| 车险| 吴忠市| 泽普县| 太康县| 武宣县| 隆安县| 九龙县| 孟州市| 沂源县| 大石桥市| 绥棱县| 行唐县| 江口县| 乳源| 定安县| 开化县| 岳普湖县| 祥云县| 上栗县| 南皮县| 永泰县| 永胜县|