1 Star 1 Fork 103

进击的码农 / LazyCaptcha

forked from pojianbing / LazyCaptcha 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

LazyCaptcha

介绍

仿EasyCaptchaSimpleCaptcha,基于.Net Standard 2.1 的图形验证码模块。
码云地址 Github 地址

效果展示

CaptchaType 字体 静态图 动图
DEFAULT (0) Actionj 输入图片说明 输入图片说明
CHINESE (1) kaiti 输入图片说明 输入图片说明
NUMBER (2) Fresnel 输入图片说明 输入图片说明
NUMBER_ZH_CN (3) kaiti 输入图片说明 输入图片说明
NUMBER_ZH_HK (4) kaiti 输入图片说明 输入图片说明
WORD (5) Epilog 输入图片说明 输入图片说明
WORD_LOWER (6) Epilog 输入图片说明 输入图片说明
WORD_UPPER (7) Epilog 输入图片说明 输入图片说明
WORD_NUMBER_LOWER (8) Epilog 输入图片说明 输入图片说明
WORD_NUMBER_UPPER (9) Epilog 输入图片说明 输入图片说明
ARITHMETIC (10) Epilog 输入图片说明 输入图片说明
ARITHMETIC_ZH (11) kaiti 输入图片说明 输入图片说明
字体 图片 字体 图片
Actionj 输入图片说明 Epilog 输入图片说明
Fresnel 输入图片说明 Headache 输入图片说明
Kaiti 输入图片说明 Lexo 输入图片说明
Prefix 输入图片说明 Progbot 输入图片说明
Ransom 输入图片说明 Robot 输入图片说明
Scandal 输入图片说明

在线演示(仅学习和试用,随时可能关掉服务)

# 此次返回的是 uyfx
http://wosperry.com.cn:8006/captcha?id=999

# 更改参数为对应的ID和图形上的验证码uyfx,通过则返回true
http://wosperry.com.cn:8006/captcha/validate?id=999&code=uyfx

安装

Install-Package Lazy.Captcha.Core
dotnet add package Lazy.Captcha.Core

使用说明

1. 注册服务

// 默认使用内存存储(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设置后  当类型为算术表达式时,长度代表操作的个数
    "ExpirySeconds": 60, // 验证码过期秒数
    "IsDevelopment": false,
    "IgnoreCase": true, // 比较时是否忽略大小写
    "StoreageKeyPrefix": "", // 存储键前缀
    "ImageOption": {
      "Animation": false, // 是否启用动画
      "FontSize": 32, // 字体大小
      "Width": 100, // 验证码宽度
      "Height": 40, // 验证码高度
      "BubbleMinRadius": 5, // 气泡最小半径
      "BubbleMaxRadius": 10, // 气泡最大半径
      "BubbleCount": 3, // 气泡数量
      "BubbleThickness": 1.0, // 气泡边沿厚度
      "InterferenceLineCount": 4, // 干扰线数量
      "FontFamily": "kaiti", // 包含actionj,epilog,fresnel,headache,lexo,prefix,progbot,ransom,robot,scandal,kaiti
      "FrameDelay": 15, // 每帧延迟,Animation=true时有效, 默认30
      "BackgroundColor": "#ffff00" //  格式: rgb, rgba, rrggbb, or rrggbbaa format to match web syntax, 默认#fff
    }
  }
}
代码配置
// 全部配置
builder.Services.AddCaptcha(builder.Configuration, option =>
{
    option.CaptchaType = CaptchaType.WORD; // 验证码类型
    option.CodeLength = 6; // 验证码长度, 要放在CaptchaType设置后.  当类型为算术表达式时,长度代表操作的个数
    option.ExpirySeconds = 30; // 验证码过期时间
    option.IgnoreCase = true; // 比较时是否忽略大小写
    option.StoreageKeyPrefix = ""; // 存储键前缀

    option.IsDevelopment = false; // 是否开发模式

    option.ImageOption.Animation = true; // 是否启用动画
    option.ImageOption.FrameDelay = 30; // 每帧延迟,Animation=true时有效, 默认30

    option.ImageOption.Width = 150; // 验证码宽度
    option.ImageOption.Height = 50; // 验证码高度
    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 = 36; // 字体大小
    option.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; // 字体,中文使用kaiti,其他字符可根据喜好设置(可能部分转字符会出现绘制不出的情况)。
});

3. Controller


    [ApiController]
    [Route("api/captcha")]
    public class CaptchaController : ControllerBase
    {
        public ICaptcha Captcha { get; }

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

        /// <summary>
        /// 生成
        /// </summary>
        [HttpGet]
        public IActionResult GenerateCaptcha(string id)
        {
            var info = Captcha.Generate(id);
            var stream = new MemoryStream(info.Bytes);
            return File(stream, "image/gif");
        }

        /// <summary>
        /// 校验:演示时使用HttpGet传参方便,这里仅做返回处理
        /// </summary>
        [HttpGet("validate")]
        public Task<bool> Validate(string id, string code)
        {
            return _captcha.ValidateAsync(id, code);
        }

        /// <summary>
        /// 校验-延迟10秒移除缓存:演示时使用HttpGet传参方便,这里仅做返回处理
        /// </summary>
        [HttpGet("validate_remove_later")]
        public Task<bool> ValidateAndRemoveLater(string id, string code)
        {
            // 为了演示,这里仅做返回处理 与上面方法一样,但是这里校验时,讲过期时间设置为10秒后,多查了一次,性能不如直接删除
            return _captcha.ValidateAsync(id, code, TimeSpan.FromSeconds(10));
        }
    }

版本历史

v1.1.0(当前版本)

  • 新增 FrameDelay 参数,控制每帧延迟,Animation = true 时有效。
  • BackgroundColor 参数支持配置文件设置。
MIT License Copyright (c) 2022 pojianbing Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

仿EasyCaptcha的.net core 下的图形验证码 展开 收起
C#
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/attacking-code-farmer/lazy-captcha.git
git@gitee.com:attacking-code-farmer/lazy-captcha.git
attacking-code-farmer
lazy-captcha
LazyCaptcha
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891