使用.Net Core实现的一个图形验证码功能

SimpleCaptcha是一个使用简单,基于.Net Standard 2.0的图形验证码模块。它的灵感来源于Edi.Wang的这篇文章https://edi.wang/post/2018/10/13/generate-captcha-code-aspnet-core,我将其中生成验证码的代码抽取出来进行封装得到了这个模块。下面介绍一下使用方式。

基本使用方式

安装SimpleCaptcha

在Nuget中搜索安装SimpleCaptcha

安装缓存模块

SimpleCaptcha依赖Microsoft.Extensions.Caching.Abstractions模块用来存储验证码,所以你需要在项目中根据自己的需要安装相应的实现包,例如这里我使用Microsoft.Extensions.Caching.Memory

Startup

修改Startup.cs文件注入相应的服务:

services.AddMemoryCache()
    .AddSimpleCaptcha(builder =>
    {
        builder.UseMemoryStore();
    });

注入ICaptcha接口

在Controller中注入核心接口ICaptcha

private readonly ICaptcha _captcha;

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

生成验证码

使用ICaptcha接口的Generate方法生成验证码

public IActionResult Captcha(string id)
{
    var info = _captcha.Generate(id);
    var stream = new MemoryStream(info.CaptchaByteData);
    return File(stream, "image/png");
}

验证

使用ICaptcha接口的Validate方法对用户的提交进行验证

public IActionResult Validate(string id, string code)
{
    var result = _captcha.Validate(id, code);
    return Json(new { success = result });
}

完整的例子可以在这里找到:https://github.com/1992w/SimpleCaptcha/tree/master/src/SimpleCaptcha.Demo

配置

SimpleCaptcha预留了一些默认的配置项,你可以根据需要自行修改。

设置验证码长度

services.AddSimpleCaptcha(builder =>
{
    builder.AddConfiguration(options =>
    {
        options.CodeLength = 6;
    });
});

设置图片大小

services.AddSimpleCaptcha(builder =>
{
    builder.AddConfiguration(options =>
    {
        options.ImageWidth = 100;
        options.ImageHeight = 36;
    });
});

设置区分大小写

默认情况下验证不区分大小写

services.AddSimpleCaptcha(builder =>
{
    builder.AddConfiguration(options =>
    {
        options.IgnoreCase = false;
    });
});

设置验证码有效期

验证码默认的有效期为5分钟

services.AddSimpleCaptcha(builder =>
{
    builder.AddConfiguration(options =>
    {
        options.ExpiryTime =TimeSpan.FromMinutes(10);
    });
});

设置字符集

SimpleCaptcha提供了ICaptchaCodeGenerator接口用来生成字符,默认的实现是从字符集012346789ABCDEFGHIJKLMNOPQRSTUVWXYZ中随机生成,你可以继承ICaptchaCodeGenerator接口实现自己的需求。

public class MyCaptchaCodeGenerator : ICaptchaCodeGenerator
{
    public string Generate(int length)
    {
        throw new NotImplementedException();
    }
}

配置自己的生成器

services.AddSimpleCaptcha(builder =>
{
    builder.AddConfiguration(options =>
    {
        options.CodeGenerator = new MyCaptchaCodeGenerator();
    });
});

设置个性化的图片

如果默认生成的图片你觉得不符合你的要求,你可以实现ICaptchaImageGenerator接口进行修改

public class CaptchaImageGenerator : ICaptchaImageGenerator
{
    public byte[] Generate(int width, int height, string captchaCode)
    {
        throw new NotImplementedException();
    }
}
services.AddSimpleCaptcha(builder =>
{
    builder.AddConfiguration(options =>
    {
        options.ImageGenerator = new CaptchaImageGenerator();
    });
});

源代码

所有源代码可以在这里获取:https://github.com/1992w/SimpleCaptcha

到此这篇关于使用.Net Core实现的一个图形验证码的文章就介绍到这了,更多相关.Net Core图形验证码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • .NET Core 2.0如何生成图片验证码完整实例

    前言 图片验证码在我们日常开发中是必不可少会遇见的一个功能,最近工作中就遇到了这个需求,所以下面将实现的方法分享给大家,话不多说了,来一起看看详细的介绍吧. .NET Core 2.0生成图片验证码 NuGet包引入:ZKWeb.System.Drawing,如下所示: 代码实例如下:VerifyCodeHelper using System; using System.DrawingCore; using System.DrawingCore.Drawing2D; using System.D

  • [Asp.Net Core]用Blazor Server Side实现图片验证码

    关于Blazor 由于在国内, Blazor一点都不普及, 在阅读此文前, 建议读者先翻看我之前写的随笔, 了解Blazor Server Side的特点. 在一段时间内, 我会写一些解说分析型的 "为什么选择 Blazor Server Side" , 在适当的时候再写快速入门系列.(无论是针对编程新学者还是多年经验人士) 验证码 我们很多场合都实现过图片验证码. 图片验证码的主要关键是呈现图片, 需要一个URL, 而这个URL需要传递参数以确定显示什么东西. 这个验证码如何在服务器

  • .Net Core 下使用ZKWeb.System.Drawing实现验证码功能(图形验证码)

    本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能. 通过测试的系统: Windows 8.1 64bit Ubuntu Server 16.04 LTS 64bit Fedora 24 64bit CentOS 7.2 64bit 可以实现以下功能: Open jpg, bmp, ico, png Save jpg, bmp, ico, png Resize image Draw graphics with brush and pen Open font

  • .Net Core 实现图片验证码的实现示例

    记录自己的学习,参考了网上各位大佬的技术,往往在登录的时候需要使用到验证码来进行简单的一个校验,这边使用在.net core上进行生成图片二维码 思路很简单=> 生成一个随机数->保存到服务端Session->生成随机码对应的图片给前端->登录的时候进行校验(也可以在后端进行随机码的token加密,存到Cooick里面在前端进行校验) 第一步:生成随机数 private static string RndNum(int VcodeNum) { //验证码可以显示的字符集合 stri

  • 使用.Net Core实现的一个图形验证码功能

    SimpleCaptcha是一个使用简单,基于.Net Standard 2.0的图形验证码模块.它的灵感来源于Edi.Wang的这篇文章https://edi.wang/post/2018/10/13/generate-captcha-code-aspnet-core,我将其中生成验证码的代码抽取出来进行封装得到了这个模块.下面介绍一下使用方式. 基本使用方式 安装SimpleCaptcha 在Nuget中搜索安装SimpleCaptcha 安装缓存模块 SimpleCaptcha依赖Micr

  • PHP实现生成带背景的图形验证码功能

    本文实例讲述了PHP实现生成带背景的图形验证码功能.分享给大家供大家参考,具体如下: 以前我们利用php生成的都是无背景或同一色彩背景的验证码了,但这种验证容易给机器识别了,这里就来介绍一些生成带背景的图形验证码实例. 1.产生一张png的图片, 2.为图片设置背景色, 3.设置字体颜色和样式, 4.产生4位数的随机的验证码, 5.把产生的每个字符调整旋转角度和位置画到png图片上, 6.加入噪点和干扰线防止注册机器分析原图片来恶意注册, 7.输出图片, 8.释放图片所占内存 authcode.

  • SpringSecurity实现图形验证码功能实例代码

    Spring Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作. 本文重点给大家介绍Spri

  • mac使用python识别图形验证码功能

    前言 最近在研究验证码相关的操作,所以准备记录下安装以及使用的过程.虽然之前对验证码的破解有所了解的,但是之前都是简单使用之后就不用了,没有记录一个详细的过程,所以后面再用起来也要重新从网上查找资料比较麻烦,所以这里准备对研究过程的关键点做一个记录. 首先这篇文章,主要是研究图形验证码,后期会不定时拓展内容. 在网上查了很多版本的图形验证码识别,目前看到最多的两个模块是pytesseract和tesserocr,但是因为我这里安装tesserocr的时候各种出错,所以最终我锁定了使用pytess

  • Spring Security基于过滤器实现图形验证码功能

    目录 前言 一. 验证码简介 二. 基于过滤器实现图形验证码 1. 实现概述 2. 创建新模块 3. 添加依赖包 4. 创建Producer对象 5. 创建生成验证码的接口 6. 自定义异常 7. 创建拦截验证码的过滤器 8. 编写SecurityConfig 9. 编写测试页面 10. 代码结构 11. 启动项目测试 前言 在前两个章节中,一一哥 带大家学习了Spring Security内部关于认证授权的核心API,以及认证授权的执行流程和底层原理.掌握了这些之后,对于Spring Secu

  • SpringBoot结合SpringSecurity实现图形验证码功能

    本文介绍了SpringBoot结合SpringSecurity实现图形验证码功能,分享给大家,具体如下: 生成图形验证码 根据随机数生成图片 将随机数存到Session中 将生成的图片写到接口的响应中 生成图形验证码的过程比较简单,和SpringSecurity也没有什么关系.所以就直接贴出代码了 根据随机数生成图片 /** * 生成图形验证码 * @param request * @return */ private ImageCode generate(ServletWebRequest r

  • java web开发之servlet图形验证码功能的实现

    一 验证码的由来 在web项目开发中,为了防止部分人使用自动工具(如:自动注册机)等进行批量的数据处理,在不同的功能节点部分,添加了验证码进行验证,达到对自动软件的屏蔽效果 最经典的应用如:网站注册图形验证码:接下来,通过java技术,结合servlet实现一个网站注册需要的图形验证码程序,提供大家参考. 二 实现注册页面图形验证码效果 1. 创建web项目:java_servlet_verifyimg 2. 创建自动生成图形验证码的控制器--VerifyImgServlet package c

  • ASP.NET生成图形验证码的方法详解

    本文实例讲述了ASP.NET生成图形验证码的方法.分享给大家供大家参考,具体如下: 通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3)保存验证码. 新建一个页面为default.aspx,  放置一个TextBox控件和一个Image控件,TextBox控件用于输入生成的字符串,Image控件用于显示字符串,它的图片就为生成的图形验证码image

  • JavaScript生成图形验证码

    本文实例为大家分享了js生成图形验证码的具体代码,供大家参考,具体内容如下 getGVerify:function (id) { function GVerify(options) { //创建一个图形验证码对象,接收options对象为参数 this.options = { //默认options参数值 id: "", //容器Id canvasId: "verifyCanvas", //canvas的ID width: "100", //默认

  • springMVC实现图形验证码(kaptcha)代码实例

    springMVC项目中实现图形验证码功能,可以使用kaptcha来实现,下面是步骤 一.引入架包,pom.xml <dependency> <groupId>com.google.code</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> 二.kaptchaProducer配置,需要在spring

随机推荐