无码国模产在线观看免费-无码国内精品久久人妻-无码国内精品久久综合88-无码国内精品人妻少妇-无码国内精品人妻少妇蜜桃视频-无码国语中文在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

.NET 驗證碼生成神器基于 SkiaSharp 的高性能方案

freeflydom
2025年4月3日 15:30 本文熱度 601

前言

在Web應(yīng)用中,圖形驗證碼(CAPTCHA)是防止自動化攻擊的重要防線。推薦一個基于 .NET 的圖形驗證碼模塊,該模塊不僅易于集成,還利用了 SkiaSharp 提供的強大性能優(yōu)勢。

項目介紹

項目最初發(fā)布的 v1 版本基于 ImageSharp,是一個純托管的圖像處理庫,無需額外的本地依賴,非常適合快速部署到各種平臺。

但是隨著項目的發(fā)展和對更高性能的需求,推出了 v2 版本,該版本基于 SkiaSharp 開發(fā)。但發(fā)布到Linux時需要安裝對應(yīng) NativeAssets(ImageSharp則不需要)。

項目特點

高性能:借助 SkiaSharp 的圖像處理能力,驗證碼生成速度更快,資源消耗更低。

易集成:模塊設(shè)計簡潔,API 易于使用,能夠快速集成到現(xiàn)有的 .NET 項目中。

跨平臺支持:雖然在 Linux 環(huán)境下需要安裝對應(yīng)的 NativeAssets,但 SkiaSharp 依然提供了出色的跨平臺兼容性。

項目使用

1、注冊服務(wù)

// 默認使用內(nèi)存存儲(AddDistributedMemoryCache)
builder.Services.AddCaptcha(builder.Configuration);
// 如果使用redis分布式緩存
//builder.Services.AddStackExchangeRedisCache(options =>
//{
//    options.Configuration = builder.Configuration.GetConnectionString("RedisCache");
//    options.InstanceName = "captcha:";
//});

2、配置

appsettings.json (不提供配置時,使用默認配置)

{
  "ConnectionStrings": {
    // 使用Redis緩存時,需要配置此項
    // 使用格式參考 Microsoft.Extensions.Caching.StackExchangeRedis
    "RedisCache": "localhost,password=Aa123456."
  },
  "CaptchaOptions": {
    "CaptchaType": 5, // 驗證碼類型
    "CodeLength": 4, // 驗證碼長度, 要放在CaptchaType設(shè)置后  當(dāng)類型為算術(shù)表達式時,長度代表操作的個數(shù), 例如2
    "ExpirySeconds": 60, // 驗證碼過期秒數(shù)
    "IgnoreCase": true, // 比較時是否忽略大小寫
    "StoreageKeyPrefix": "", // 存儲鍵前綴
    "ImageOption": {
      "Animation": false, // 是否啟用動畫
      "FontSize": 32, // 字體大小
      "Width": 100, // 驗證碼寬度
      "Height": 40, // 驗證碼高度
      "BubbleMinRadius": 5, // 氣泡最小半徑
      "BubbleMaxRadius": 10, // 氣泡最大半徑
      "BubbleCount": 3, // 氣泡數(shù)量
      "BubbleThickness": 1.0, // 氣泡邊沿厚度
      "InterferenceLineCount": 3, // 干擾線數(shù)量
      "FontFamily": "kaiti", // 包含actionj,epilog,fresnel,headache,lexo,prefix,progbot,ransom,robot,scandal,kaiti
      "FrameDelay": 15, // 每幀延遲,Animation=true時有效, 默認30
      "BackgroundColor": "#ffffff", //  格式: rgb, rgba, rrggbb, or rrggbbaa format to match web syntax, 默認#fff
      "ForegroundColors": "", //  顏色格式同BackgroundColor,多個顏色逗號分割,隨機選取。不填,空值,則使用默認顏色集
      "Quality": 100, // 圖片質(zhì)量(質(zhì)量越高圖片越大,gif調(diào)整無效可能會更大)
      "TextBold": false // 粗體,該配置2.0.3新增
    }
  }
}

配置可以通過運行Sample.Winfrom生成或直接下載Release運行。

代碼配置

// 全部配置
builder.Services.AddCaptcha(builder.Configuration, option =>
{
    option.CaptchaType = CaptchaType.WORD; // 驗證碼類型
    option.CodeLength = 6; // 驗證碼長度, 要放在CaptchaType設(shè)置后.  當(dāng)類型為算術(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)繪制不出的情況)。
     * 當(dāng)驗證碼類型為“ARITHMETIC”時,不要使用“Ransom”字體。(運算符和等號繪制不出來)
     */
     option.ImageOption.TextBold = true;// 粗體,該配置2.0.3新增
});

3、Controller

[Route("captcha")]
[ApiController]
public class CaptchaController : Controller
{
    private readonly ICaptcha _captcha;
    public CaptchaController(ICaptcha captcha)
    {
        _captcha = captcha;
    }
    [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>
    /// 演示時使用HttpGet傳參方便,這里僅做返回處理
    /// </summary>
    [HttpGet("validate")]
    public bool Validate(string id, string code)
    {
        return _captcha.Validate(id, code);
    }
    /// <summary>
    /// 多次校驗(https://gitee.com/pojianbing/lazy-captcha/issues/I4XHGM)
    /// 演示時使用HttpGet傳參方便,這里僅做返回處理
    /// </summary>
    [HttpGet("validate2")]
    public bool Validate2(string id, string code)
    {
        return _captcha.Validate(id, code, false);
    }
}

自定義隨機驗證碼

動圖和靜態(tài)圖隨機出現(xiàn), CaptchaType隨機。

自定義字體

1、尋找字體

你可以通過fontspace找到自己喜愛的字體。

2、將字體放入項目,并設(shè)置為嵌入資源。

當(dāng)然也可以不作為嵌入資源,放到特定目錄也是可以的,只要對下邊ResourceFontFamilysFinder稍作修改即可。

.NET Framework下使用

新建MVC項目.NET Framework 選擇 4.6.2。

Nuget安裝,先安裝SkiaSharp, 再安裝Lazy.Captcha.Core。

項目效果

項目地址

Gitee:gitee.com/pojianbing/…?

總結(jié)

以上僅展示了LazyCaptcha v2圖形驗證碼模塊的部分功能。更多實用特性和詳細信息,請大家訪問項目地址。

轉(zhuǎn)自https://juejin.cn/post/7488545861091278875


該文章在 2025/4/3 15:33:41 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 久久99国产亚洲精品观看 | 久久精品视频5 | 欧美日韩国产一区二区三区欧 | 制服丝袜中文字幕丰满人妻 | 无码一区二区 | a级毛片免费全部播放 | 日韩一级欧美一级在线观看 | 免费一区二区三区视频导航 | 免费看欧美换爱交换乱理伦片 | 国产嫖妓一区二区三区妓女视频 | 无码人妻aⅴ一区二区三区有奶水 | 自拍一区在线 | 欧美亚洲另类图片一区二区 | 部无遮挡拍拍拍免费视频 | 亚洲国产成人综合在线电影二 | 国产精品成人一区无码 | 亚洲三三级片视频 | 精品一区二区三区影院在线午夜 | 欧美内射深喉中文字幕 | 国产网曝在线观看视频 | 亚洲爆乳无码精品aaa片蜜桃 | 精品国产三级a∨在线观看 精品国产三级a∨在线欧美 | 日韩精品无码视频中文字幕 | 亚洲男女在线观看视频 | 成人精品视频成 | 成人做爰A片三免费视频 | 日韩毛片基地 | 久久无码AV亚洲精品色午夜 | 韩国和日本免费不卡在线V 韩国黄色毛片 | 国产亚洲欧美日本一二三本道 | WWW亚洲色大成网络.COM | 成a人无码精品va片 成a人亚洲精v品无码 | 欧美日韩国产码高清综合 | 亚洲日产精品一二三四区 | 日日视频| 91精品国产一区 | 中文字幕人妻丝袜成熟乱九区 | 欧美日韩久久久精品A片 | 伊人激情综合网 | 久久国产资源 | 又紧又爽又粗精品一区二区 |