開源.net core 驗證碼 - LazyCaptcha


LazyCaptcha

介紹

LazyCaptcha是仿EasyCaptchaSimpleCaptcha,基於.Net Standard 2.1的圖形驗證碼模塊。
項目地址

效果展示

CaptchaType 字體 靜態圖 動圖
DEFAULT Actionj 輸入圖片說明 輸入圖片說明
WORD Actionj 輸入圖片說明 輸入圖片說明
WORD_LOWER Actionj 輸入圖片說明 輸入圖片說明
WORD_UPPER Actionj 輸入圖片說明 輸入圖片說明
WORD_NUMBER_LOWER Actionj 輸入圖片說明
WORD_NUMBER_UPPER Actionj
NUMBER Fresnel
NUMBER_ZH_CN kaiti
NUMBER_ZH_HK kaiti
ARITHMETIC Actionj
ARITHMETIC_ZH Actionj
字體 圖片
Actionj
Epilog
Fresnel
Headache
Kaiti
Lexo
Prefix
Progbot
Ransom
Robot
Scandal

安裝教程

Install-Package Lazy.Captcha.Core

使用說明(以Github內使用方式為准,這里不做同步更新

  1. 注冊服務

默認設置

builder.Services.AddDistributedMemoryCache().AddCaptcha();

詳細設置

builder.Services.AddDistributedMemoryCache().AddCaptcha(option =>
{
    option.CaptchaType = CaptchaType.DEFAULT; // 驗證碼類型
    option.CodeLength = 4; // 驗證碼長度, 要放在CaptchaType設置后
    option.ExpiryTime = TimeSpan.FromSeconds(30); // 驗證碼過期時間
    option.IgnoreCase = true; // 比較時是否忽略大小寫
    option.ImageOption.Animation = false; // 是否啟用動畫
    
    option.ImageOption.Width = 130; // 驗證碼寬度
    option.ImageOption.Height = 48; // 驗證碼高度
    option.ImageOption.BackgroundColor = SixLabors.ImageSharp.Color.White; // 驗證碼背景色
    
    option.ImageOption.BubbleCount = 2; // 氣泡數量
    option.ImageOption.BubbleMinRadius = 5; // 氣泡最小半徑
    option.ImageOption.BubbleMaxRadius = 15; // 氣泡最大半徑
    option.ImageOption.BubbleThickness = 1; // 氣泡邊沿厚度

    option.ImageOption.InterferenceLineCount = 2; // 干擾線數量

    option.ImageOption.FontSize = 28; // 字體大小
    option.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; // 字體,中文使用kaiti,其他字符可根據喜好設置(可能部分轉字符會出現繪制不出的情況)。
});
  1. Controller
public class CaptchaController : Controller
{
    private readonly ILogger<CaptchaController> _logger;
    private readonly ICaptcha _captcha;
    
    public CaptchaController(ILogger<CaptchaController> logger, ICaptcha captcha)
    {
        _logger = logger;
        _captcha = captcha;
    }
    
    [HttpGet]
    [Route("/captcha")]
    public IActionResult Captcha(string id)
    {
        var info = _captcha.Generate(id);
        var stream = new MemoryStream(info.Bytes);
        return File(stream, "image/gif");
    }
    
    [HttpGet]
    [Route("/captcha/validate")]
    public bool Validate(string id, string code)
    {
        if (!_captcha.Validate(id, code))
        {
            throw new Exception("無效驗證碼");
        }
    
        // 具體業務
    
        // 為了演示,這里僅做返回處理
        return true;
    }
}

項目地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM