LazyCaptcha - .NET 验证码组件

主题 粗体
类型/字体
{{font}}

项目介绍

LazyCaptcha 是一个简单易用的 .NET 验证码组件,支持多种验证码类型、字体样式和图片配置。

快速开始

1. 安装 NuGet 包

dotnet add package Lazy.Captcha.Core

2. 配置服务(Program.cs)

builder.Services.AddCaptcha(builder.Configuration);

3. 注入使用

public class CaptchaController : Controller
{
    private readonly ICaptcha _captcha;

    public CaptchaController(ICaptcha captcha)
    {
        _captcha = captcha;
    }

    // 生成验证码
    public IActionResult Generate(string id)
    {
        var info = _captcha.Generate(id);
        return File(info.Bytes, "image/gif");
    }

    // 校验验证码
    public bool Validate(string id, string code)
    {
        return _captcha.Validate(id, code);
    }
}

4. 配置选项(appsettings.json)

{
  "CaptchaOptions": {
    "CaptchaType": 10,          // 验证码类型
    "CodeLength": 4,            // 验证码长度
    "ExpirySeconds": 60,        // 过期时间(秒)
    "IgnoreCase": true,         // 忽略大小写
    "ImageOption": {
      "Animation": true,        // 是否启用动画
      "FontSize": 36,           // 字体大小
      "Width": 150,             // 宽度
      "Height": 50              // 高度
    }
  }
}

验证码配置信息 - {{selectedConfig.type}} / {{selectedConfig.font}}

配置信息 (Configuration)

{{configJson}}

cURL 请求示例

{{curlCommand}}

HTTP 请求原文

{{httpRequest}}

验证码示例与校验测试

验证码示例

Content-Type: image/gif

验证码ID: {{captchaId}}

💡 点击图片可刷新验证码

⚠️ 架构说明:

上方展示的验证码使用 /captcha/dynamic 接口,通过 CaptchaServiceBuilder 创建独立实例(支持自定义配置),因此无法直接校验。

下方提供使用注入实例的验证码用于校验测试(使用 appsettings.json 配置)。

💡 这是 LazyCaptcha 的架构设计:Builder方式适合灵活展示,注入方式适合业务校验。

校验功能测试(使用注入实例)
测试验证码

验证码ID: {{testCaptchaId}}

使用 appsettings.json 配置(CodeLength=2, CaptchaType=10)

{{validateResult.success ? '✓' : '✗'}} {{validateResult.success ? '校验成功' : '校验失败'}}

校验方式:{{validateResult.isReusable ? '可重复校验' : '一次性校验'}}

请求URL:{{validateResult.url}}

响应结果:{{validateResult.response}}

💡 提示:一次性校验模式下,验证成功后验证码会失效,后续请求会返回 false

💡 提示:可重复校验模式下,验证码可以多次验证(通过设置 removeIfSuccess=false)