欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

netcore 生成驗(yàn)證碼的過程詳解

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

安裝依賴

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 Substitution 頁面緩存而部分不緩存的實(shí)現(xiàn)方法

    在ASP.NET中要實(shí)現(xiàn)部分內(nèi)容非緩存,而其它的都需要緩存輸出,可以使用Substitution控件實(shí)現(xiàn).
    2009-03-03
  • OpenCms 帶分頁的新聞列表

    OpenCms 帶分頁的新聞列表

    有一些網(wǎng)友在新聞列表分頁上還遇到一些問題,正好這個blog上也忘記了此部分內(nèi)容,現(xiàn)在補(bǔ)充上,功能是實(shí)現(xiàn)了,可以自己再做些優(yōu)化,OpenCms7.0.5下測試通過,內(nèi)容如下(編輯器的插入代碼功能有問題,就直接把代碼粘上了
    2008-07-07
  • 淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient

    淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient

    這篇文章主要介紹了淺談.net core 注入中的三種模式:Singleton、Scoped 和 Transient,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Asp.net通過SignalR2進(jìn)行實(shí)時聊天

    Asp.net通過SignalR2進(jìn)行實(shí)時聊天

    這篇文章介紹了Asp.net通過SignalR2進(jìn)行實(shí)時聊天的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • ASP.net(c#) 生成html的幾種解決方案[思路]

    ASP.net(c#) 生成html的幾種解決方案[思路]

    下面的文章轉(zhuǎn)載自網(wǎng)絡(luò),其代碼很多都有問題,這里只提供給大家一個思路.
    2009-05-05
  • 詳解VS2017 Linux 上.NET Core調(diào)試

    詳解VS2017 Linux 上.NET Core調(diào)試

    這篇文章主要介紹了詳解VS2017 Linux 上.NET Core調(diào)試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證

    ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 詳解ASP.NET MVC Form表單驗(yàn)證

    詳解ASP.NET MVC Form表單驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC Form表單驗(yàn)證,一般驗(yàn)證方式有Windows驗(yàn)證和表單驗(yàn)證,web項目用得更多的是表單驗(yàn)證,感興趣的小伙伴們可以參考一下
    2016-03-03
  • asp.net生成Excel并導(dǎo)出下載五種實(shí)現(xiàn)方法

    asp.net生成Excel并導(dǎo)出下載五種實(shí)現(xiàn)方法

    有關(guān)Excel下載的文章網(wǎng)上想必有很多,利用閑暇時間整理了一些有Excel下載方法的文章,接下來介紹五種實(shí)現(xiàn)Excel下載的方法,感興趣的朋友可以了解下,或許對你學(xué)習(xí)Excel下載有所幫助
    2013-02-02
  • ASP.NET簡化編輯界面解決思路及實(shí)現(xiàn)代碼(2)

    ASP.NET簡化編輯界面解決思路及實(shí)現(xiàn)代碼(2)

    這篇與前一篇改進(jìn)部分,也許大家會留意到動畫演示,主要是GridVeiw的更新與刪除會在每row都有。因此Insus.NET把它抽取出來,放在GridView外,感興趣的朋友可以了解下啊,希望本文對你有所幫助
    2013-01-01

最新評論