【个人博客搭建】(25)做一个图形验证码功能

在系统的注册、登录等场景,都有很多类似的案例。也有类似于滑动验证、选字顺序验证等效果。今天带来的是文件流形式的,相当于动态图片吧

1、安装nuget包:Lazy.Captcha.Core

2、 在入口文件中注入:

#region 图形验证码

builder.Services.AddCaptcha(option =>
{
    option.CaptchaType = CaptchaType.WORD_NUMBER_LOWER; //验证码类型
    option.CodeLength = 6; //验证码长度, 要放在CaptchaType设置后.  当类型为算术表达式时,长度代表操作的个数
    option.ExpirySeconds = 120; //验证码过期时间
    option.IgnoreCase = true; //比较时是否忽略大小写
    option.StoreageKeyPrefix = ""; //存储键前缀

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

    option.ImageOption.Width = 132; //验证码宽度
    option.ImageOption.Height = 40; //验证码高度

    option.ImageOption.BubbleCount = 3; //气泡数量
    option.ImageOption.BubbleMinRadius = 5; //最小半径
    option.ImageOption.BubbleMaxRadius = 15; //最大半径
    option.ImageOption.BubbleThickness = 1; //边沿厚度

    option.ImageOption.InterferenceLineCount = 3; //干扰线数量

    option.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; //字体
    option.ImageOption.FontSize = 36; //字体大小
    option.ImageOption.TextBold = true;//粗体

});

#endregion

3、获取:

控制器构造函数注入    private readonly ICaptcha _captcha;


    /// <summary>
    /// 获取验证码
    /// </summary>
    /// <param name="id">验证码唯一id</param>
    /// <returns></returns>
    [HttpGet]
    public IActionResult Captcha([FromQuery] string id)
    {
        var data = _captcha.Generate(id);
        var stream = new MemoryStream(data.Bytes);
        return new FileStreamResult(stream, "image/gif");
    }

4、测试:

在前端中,就可以直接用这个url作为img的src

<el-button class="login-content-code" v-waves @click="onCaptchaChange">
          <img :src="captchaUrl" alt="看不清?点击换一张!" />
        </el-button>

 5、验证:

 bool validate = _captcha.Validate(Id, Code);
 if (!validate)
 {
     //验证码错误
 }

6、其他类型的验证这里暂时不做分享,后续有空再做补充分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/705739.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring对事务的支持

一、事务 事务防止进行操作时&#xff0c;数据库里面的数据丢失。 二、Spring事务注解方式 注解方式&#xff1a;在配置文件中配置事务管理器&#xff0c;利用注解&#xff0c;管理事务。 实例 银行转账&#xff1a;一个账户向另一个账户转账。 1&#xff09;先在数据库my…

串联谐振回路

等效电路 电感的损耗电阻&#xff0c;频率越高越大&#xff0c;与电感串联&#xff0c;会分走电压&#xff0c;不可忽略。 电容的漏电电阻&#xff0c;等效阻值大&#xff0c;与电容并联&#xff0c;高频时&#xff0c;电容容抗小&#xff0c;漏电电阻几乎分不走电流&#xf…

找不到libcef.dll是怎么回事?libcef.dll丢失的6种修复方法

在使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“电脑提示libcef.dll丢失”。这个问题可能让人感到困惑和烦恼&#xff0c;但通过了解其原因和解决方法&#xff0c;我们可以更好地应对类似的问题。在本文中&#xff0c;我将分享我对于“电…

QML Canvas 代码演示

一、文字阴影 / 发光 Canvas{id: root; width: 400; height: 400onPaint: //所有的绘制都在onPaint中{var ctx getContext("2d") //获取上下文// 绘制带阴影的文本ctx.fillStyle "#333" //设置填充颜色ctx.fillRect(0, 0, root.width, root.height…

Fluid 1.0 版发布,打通云原生高效数据使用的“最后一公里”

作者&#xff1a;顾荣 前言 得益于云原生技术在资源成本集约、部署运维便捷、算力弹性灵活方面的优势&#xff0c;越来越多企业和开发者将数据密集型应用&#xff0c;特别是 AI 和大数据领域应用&#xff0c;运行于云原生环境中。然而&#xff0c;云原生计算与存储分离架构虽…

【数字化转型,销售先行】销售的数字化转型需要做哪些工作?

引言&#xff1a;销售进行数字化转型的背景主要包括市场环境的快速变化、新技术发展的推动、企业发展的需求以及数据驱动决策的需求。这些背景因素共同促使企业加快数字化转型步伐&#xff0c;以适应市场变化、提升竞争力并实现可持续发展。 销售的数字化转型包含哪些内容&…

Qt飞机大战小游戏

Gitee地址 &#xff1a;plane-game: 基于Qt的飞机大战小游戏 GitHub地址&#xff1a; https://github.com/a-mo-xi-wei/plane-game

群晖NAS安装配置Joplin Server用来存储同步Joplin笔记内容

一、Joplin Server简介 1.1、Joplin Server介绍 Joplin支持多种方式进行同步用户的笔记数据&#xff08;如&#xff1a;Joplin自己提供的收费的云服务Joplin Cloud&#xff0c;还有第三方的云盘如Dropbox、OneDrive&#xff0c;还有自建的云盘Nextcloud、或者通过WebDAV协议来…

-bash: unzip: command not found

1、报错截图如下 2、解决办法 yum install unzip

【Python/Pytorch - 网络模型】-- 手把手搭建3D VGG感知损失模型

文章目录 文章目录 00 写在前面01 基于Pytorch版本的3D VGG代码02 论文下载 00 写在前面 感知损失&#xff1a;对于提升图片的肉眼可见细节&#xff0c;效果十分明显&#xff1b;对于一些指标如&#xff08;SSIM、PSNR&#xff09;这些&#xff0c;效果不明显。 在01中&…

微服务之远程调用

常见的远程调用方式 RPC&#xff1a;Remote Produce Call远程过程调用&#xff0c;类似的还有 。自定义数据格式&#xff0c;基于原生TCP通信&#xff0c;速度快&#xff0c;效率高。早期的webservice&#xff0c;现在热门的dubbo &#xff08;12不再维护、17年维护权交给apac…

A+B依旧可以卷!多尺度特征融合+注意力机制,新SOTA准确率高达99%

在处理复杂实际问题时&#xff0c;我们可以结合多尺度特征融合和注意力机制&#xff0c;让模型不仅能从多个尺度上捕获丰富的特征信息&#xff0c;还可以专注于输入中的关键部分&#xff0c;来提高模型的泛化能力和性能。 具体到图像处理领域&#xff0c;这种方法就是允许模型…

风控中的文本相似方法之余弦定理

一、 余弦相似概述 余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1&#xff0c;而其他任何角度的余弦值都不大于1&#xff1b;并且其最小值是-1。 从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。结果是与向量的长…

重新安装TortoiseGit后提示权限错误问题解决

今天在Windows11系统中下载安装使用TortoiseGit可视化Git工具&#xff0c;进行代码提交管理。 由于电脑之前是一位开发人员在使用&#xff0c;所以曾经安装使用过这个工具。 重新安装好软件后&#xff0c;在coding网站中复制代码路径后&#xff0c;在本地目录通过鼠标右键选择…

WPF/C#:异常处理

什么是异常&#xff1f; 在C#中&#xff0c;异常是在程序执行过程中发生的特殊情况&#xff0c;例如尝试除以零、访问不存在的文件、网络连接中断等。这些情况会中断程序的正常流程。 当C#程序中发生这种特殊情况时&#xff0c;会创建一个异常对象并将其抛出。这个异常对象包…

Go微服务框架Kratos中makefile命令的使用方法及报错处理

运用 kratos 微服务框架开发项目时&#xff0c;可以使用提供的 makefile 中的命令自动且快速生产相关代码&#xff0c;提高开发效率。 krotos中makefile文件内容如下&#xff1a; GOHOSTOS:$(shell go env GOHOSTOS) GOPATH:$(shell go env GOPATH) VERSION$(shell git descri…

翻译英文文献工具

翻译英文文献工具 1. zotero1. 安装zotero2. 安装pdf翻译器2.1. 查看zotero版本2.2. 下载对应的pdf翻译器插件版本2.3. 安装插件2.4. 使用插件 2. 小绿鲸英文文献阅读器1. 安装2. 使用 1. zotero 1. 安装zotero 官网&#xff1a; https://www.zotero.org/ 一键next默认安装就…

(四)React组件、useState、组件样式

1. 组件 1.1 组件是什么 概念&#xff1a;一个组件就是用户界面的一部分&#xff0c;它可以有自己的逻辑和外观&#xff0c;组件之间可以相互嵌套&#xff0c;也可以复用多次。 组件化开发可以让开发者像搭积木一样构建一个完整的庞大应用 1.2 React组件 在React中&#xf…

独具韵味的移动端 UI 风格

独具韵味的移动端 UI 风格

《转载》前苏联的三进制计算机Setun

1、苏联的三进制计算机概述 早在 1956 年&#xff0c;就需要创建一种可在大学和实验室中使用的实用数字计算机模型。为此&#xff0c;需要一种易于学习、可靠、廉价但同时高效、专为大规模使用而设计的小型计算机。 对这种机器的要求&#xff1a;运行速度必须等于每秒数百次操作…