广告
返回顶部
首页 > 资讯 > 精选 >.NET如何实现滑动验证码
  • 184
分享到

.NET如何实现滑动验证码

2023-07-04 16:07:45 184人浏览 八月长安
摘要

本篇内容介绍了“.net如何实现滑动验证码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CaptchaData.csCaptchaData.

本篇内容介绍了“.net如何实现滑动验证码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

CaptchaData.cs

CaptchaData.cs:验证码的数据类实体

namespace SlideCaptcha.Model{    public class CaptchaData    {        /// <summary>        /// id        /// </summary>        public string Id { get; set; }        /// <summary>        /// 背景图(含凹槽)        /// </summary>        public string BackgroundImage { get; set; }        /// <summary>        /// 滑动块图        /// </summary>        public string SliderImage { get; set; }        public CaptchaData(string id, string backgroundImage, string sliderImage)        {            Id = id;            BackgroundImage = backgroundImage;            SliderImage = sliderImage;        }    }}

id表示验证码的id值,用于校验验证码,BackgroundImage 是验证码图片base64,包含了凹槽。凹槽模板在templates目录下。SliderImage 是滑块图片。模板在templates下。

CaptchaValidateData.cs

CaptchaValidateData.cs:验证码验证数据实体

namespace SlideCaptcha.Model{    public class CaptchaValidateData    {        /// <summary>        /// 滑动比例        /// </summary>        public float Percent { get; set; }        /// <summary>        /// 容错值(校验时用,缺口位置与实际滑动位置匹配容错范围)        /// </summary>        public float Tolerant { get; set; }        public CaptchaValidateData(float percent, float tolerant)        {            Percent = percent;            Tolerant = tolerant;        }    }}

ImageCaptchainfo.cs

ImageCaptchaInfo.cs:证码图片信息实体

namespace SlideCaptcha.Model{    public class ImageCaptchaInfo    {        /// <summary>        /// 背景图宽        /// </summary>        public int BackgroundImageWidth { get; set; }        /// <summary>        /// 背景图高        /// </summary>        public int BackgroundImageHeight { get; set; }        /// <summary>        /// 背景图        /// </summary>        public string BackgroundImageBase64 { get; set; }        /// <summary>        /// 滑动块图宽        /// </summary>        public int SliderImageWidth { get; set; }        /// <summary>        /// 滑动块图高        /// </summary>        public int SliderImageHeight { get; set; }        /// <summary>        /// 滑动块图        /// </summary>        public string SliderImageBase64 { get; set; }    }}

验证码实体类的基类,滑动验证码、旋转验证码、点选验证码、拼接验证码都基于这个类。

Resource.cs

Resource.cs :资源实体类

namespace SlideCaptcha.Model{    public class Resource    {        public Resource(){}        /// <summary>        /// 资源数据        /// </summary>        public string Data { get; set; }        /// <summary>        /// 资源类型        /// </summary>        public string Type { get; set; }                /// <summary>        /// 构造函数        /// </summary>        /// <param name="type">资源类型</param>        /// <param name="data">资源数据</param>        public Resource(string type,string data)        {            Type = type;            Data = data;        }    }}

资源数据,Data为要生成验证码图片路径。Type为类型,目前仅为本地文件,后期将扩展URL模式。

SliderImageCaptchaInfo.cs

SliderImageCaptchaInfo.cs:滑动验证码实体类

using SlideCaptcha.Exceptions;namespace SlideCaptcha.Model{    public class SliderImageCaptchaInfo : ImageCaptchaInfo    {        /// <summary>        /// 凹槽x坐标        /// </summary>        public int X { get; set; }        /// <summary>        /// 凹槽y坐标        /// </summary>        public int Y { get; set; }        /// <summary>        /// 凹槽位置百分比        /// </summary>        public float Percent        {            get            {                if (BackgroundImageWidth <= 0) return 0;                return 1.0f * X / BackgroundImageWidth;            }        }        public void Check()        {            // 校验            if (this.X <= 0) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(X)}小于等于0");            if (this.Y <= 0) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(Y)}小于等于0");            if (this.BackgroundImageWidth <= 0) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(BackgroundImageWidth)}小于等于0");            if (this.BackgroundImageHeight <= 0) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(BackgroundImageHeight)}小于等于0");            if (this.SliderImageWidth <= 0) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(SliderImageWidth)}小于等于0");            if (this.SliderImageHeight <= 0) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(SliderImageHeight)}小于等于0");            if (string.IsNullOrWhiteSpace(this.BackgroundImageBase64)) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(BackgroundImageBase64)}为空");            if (string.IsNullOrWhiteSpace(this.SliderImageBase64)) throw new SlideCaptchaException($"SliderImageCaptchaInfo数据异常: {nameof(SliderImageBase64)}为空");        }    }}

SlideTrack.cs

&middot;SlideTrack.cs:滑动轨迹&middot;

using SlideCaptcha.Exceptions;using System;using System.Collections.Generic;namespace SlideCaptcha.Model{    /// <summary>    /// 滑动轨迹    /// </summary>    public class SlideTrack    {        /// <summary>        /// 背景图片宽度(可能经过缩放,不是原始图片宽高)        /// </summary>        public int BackgroundImageWidth { get; set; }        /// <summary>        /// 背景图片高度(可能经过缩放,不是原始图片宽高)        /// </summary>        public int BackgroundImageHeight { get; set; }        /// <summary>        /// 滑块图片宽度(可能经过缩放,不是原始图片宽高)        /// </summary>        public int SliderImageWidth { get; set; }        /// <summary>        /// 滑块图片高度(可能经过缩放,不是原始图片宽高)        /// </summary>        public int SliderImageHeight { get; set; }        /// <summary>        /// 滑动开始时间(可能经过缩放,不是原始图片宽高)        /// </summary>        public DateTime StartTime { get; set; }        /// <summary>        /// 滑动结束时间        /// </summary>        public DateTime EndTime { get; set; }        /// <summary>        /// 轨迹        /// </summary>        public List<Track> Tracks { get; set; }        /// <summary>        /// 滑动比例        /// </summary>        public float Percent        {            get            {                if (this.BackgroundImageWidth <= 0) return -1;                if (this.Tracks.Count <= 0) return -1;                var lastTrack = this.Tracks[this.Tracks.Count - 1];                return 1.0f * lastTrack.X / this.BackgroundImageWidth;            }        }        public void Check()        {            // 校验            if (this.BackgroundImageWidth <= 0) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(BackgroundImageWidth)}小于等于0");            if (this.BackgroundImageHeight <= 0) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(BackgroundImageHeight)}小于等于0");            if (this.SliderImageWidth <= 0) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(SliderImageWidth)}小于等于0");            if (this.SliderImageHeight <= 0) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(SliderImageHeight)}小于等于0");            if (this.StartTime == DateTime.MinValue) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(StartTime)}为空");            if (this.EndTime == DateTime.MinValue) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(EndTime)}为空");        }        public void CheckTracks()        {            if (this.Tracks == null || this.Tracks.Count == 0) throw new SlideCaptchaException($"SlideTrack数据异常: {nameof(Tracks)}为空");        }    }}

TemplatePair.cs

&middot;TemplatePair.cs:模板类&middot;

namespace SlideCaptcha.Model{    public class TemplatePair    {        public TemplatePair() { }        /// <summary>        /// 滑块资源        /// </summary>        public Resource Slider { get; set; }        /// <summary>        /// 凹槽资源        /// </summary>        public Resource Notch { get; set; }        /// <summary>        /// 模板类型        /// </summary>        public string TYPE { get; set; }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="slider">滑块资源</param>        /// <param name="notch">凹槽资源</param>        /// <param name="type">末班类型</param>        public TemplatePair(Resource slider, Resource notch,string type)        {            Slider = slider;            Notch = notch;            TYPE = type;        }        /// <summary>        /// 创建模板        /// </summary>        /// <param name="slider">滑块资源</param>        /// <param name="notch">凹槽资源</param>        /// <returns></returns>        public static TemplatePair Create(Resource slider, Resource notch,string type)        {            return new TemplatePair(slider, notch,type);        }            }}

Track.cs

Track.cs :滑动数据实体类

namespace SlideCaptcha.Model{    public class Track    {        /// <summary>        /// X轴        /// </summary>        public int X { get; set; }        /// <summary>        /// Y轴        /// </summary>        public int Y { get; set; }        /// <summary>        /// 时间        /// </summary>        public int T { get; set; }    }}

代码中SlideCaptchaException是自定义错误类。自定义错误类在Extensions文件夹下。

“.NET如何实现滑动验证码”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: .NET如何实现滑动验证码

本文链接: https://www.lsjlt.com/news/346442.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .NET如何实现滑动验证码
    本篇内容介绍了“.NET如何实现滑动验证码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CaptchaData.csCaptchaData....
    99+
    2023-07-04
  • Java如何实现滑动验证码
    小编给大家分享一下Java如何实现滑动验证码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!功能:java实现滑动验证码项目是采用springboot,maven开发工具:采用idea1.效果演示2.后端代码控制层@Cont...
    99+
    2023-06-29
  • .net如何实现动态验证码功能
    这篇文章主要介绍.net如何实现动态验证码功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!绪论:本文是.net实现动态验证码的显示,需使用到一般处理程序(ashx)来看看实现的效果图登录成功验证码错误登录失败看过了...
    99+
    2023-06-14
  • .net实现动态验证码功能
    绪论:本文是.net实现动态验证码的显示,需使用到一般处理程序(ashx) 来看看实现的效果图 1.登录成功 2.验证码错误登录失败 看过了上面的开始实现吧 先把验证码搞出来 ...
    99+
    2022-11-12
  • canvas如何实现滑动验证
    小编给大家分享一下canvas如何实现滑动验证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!突然想到的方法,来试试吧页面布局<canvas id=...
    99+
    2023-06-09
  • C#滑动验证码拼图验证功能实现(SlideCaptcha)
    目录使用背景:实现分析:后端代码:准备:使用:前端代码:结语:使用背景: 关于滑动验证码的使用场所还是非常多的,如:调取短信接口之前,和 注册请求之前 或者 频繁会调用的接口都需要加...
    99+
    2022-11-13
  • Flutter实现滑动块验证码功能
    Flutter实现滑动块验证码功能,供大家参考,具体内容如下 本文实现的是一个用于登录时,向右滑动滑动块到最右边完成验证的一个功能。当滑动未到最右边时,滑动块回弹回左边起始位置。 ...
    99+
    2022-11-13
  • js插件如何实现图片滑动验证码
    这篇文章将为大家详细讲解有关js插件如何实现图片滑动验证码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jquery.lgymove.js  (function...
    99+
    2022-10-19
  • 如何使用php+js实现极验,拖动滑块验证码验证表单
    这篇文章给大家分享的是有关如何使用php+js实现极验,拖动滑块验证码验证表单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   代码实现   html文件   <!...
    99+
    2022-10-19
  • Java实现滑动验证码的示例代码
    目录1.效果演示2.后端代码控制层工具类3.前端页面功能:java实现滑动验证码 项目是采用springboot,maven 开发工具:采用idea 1.效果演示 2.后端代码...
    99+
    2022-11-13
  • JavaScript实现滑块验证码
    本文实例为大家分享了JavaScript实现滑块验证码的具体代码,供大家参考,具体内容如下 效果:鼠标在底部滑块上按下按住不松拖动可以移动滑块,上面大图里面带有小图背景的滑块也会跟随...
    99+
    2022-11-12
  • vue实现滑动验证条
    本文实例为大家分享了vue实现滑动验证条的具体代码,供大家参考,具体内容如下 效果 代码 VerifySlider.vue <template>   <div ...
    99+
    2022-11-13
  • Java实现滑动验证码(前端部分)
    目录实现思路实现代码实现结果实现思路 1、请求后端获得背景图、滑块、x、y、误差范围bound 2、将滑块设置到对应的位置:top = y 3、添加鼠标滑动事件 实现代码 后端请求(...
    99+
    2022-11-13
    Java滑动验证码 Java 验证码
  • Vue如何实现滑动验证功能
    这篇文章主要介绍了Vue如何实现滑动验证功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。用Vue实现滑动验证码,鼠标点击滑动验证,验证成功之后会显示验证通过。程序分析鼠标的...
    99+
    2023-06-29
  • Flutter怎么实现滑动块验证码功能
    这篇文章主要介绍“Flutter怎么实现滑动块验证码功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter怎么实现滑动块验证码功能”文章能帮助大家解决问题。本文实现的是一个用于登录时,向右...
    99+
    2023-06-29
  • 聊聊php滑动验证码的实现原理
    随着互联网的迅速发展,验证码成为了互联网安全保障的重要手段。其中,滑动验证码由于其简单易懂、操作方便、安全性高等特点,在实际应用中已经得到了广泛的应用。本文将介绍php滑动验证码的实现原理。一、滑动验证码的定义与应用滑动验证码是一种人机交互...
    99+
    2023-05-14
    php
  • vue实现移动滑块验证
    本文实例为大家分享了vue实现移动滑块验证的具体代码,供大家参考,具体内容如下 记录一下今天的学习内容 <div class="solidBox" :class="{'so...
    99+
    2022-11-13
  • JS实现拖动滑块验证
    使用这种验证方法的目的:证明当前的用户不是机器人~防止恶意操作。 实现思路: 1、获取silde滑块(获取元素) 2、为元素注册事件———鼠标点击...
    99+
    2022-11-13
  • Vue实现滑动验证功能
    用Vue实现滑动验证码,鼠标点击滑动验证,验证成功之后会显示验证通过。 程序分析 1、鼠标的点击2、滑块的拖动3、未验证之前滑动条上显示的文字4、滑块箭头指向Vue函数5、判断是否拖...
    99+
    2022-11-13
  • vue实现图片滑动验证
    本文实例为大家分享了vue实现图片滑动验证的具体代码,供大家参考,具体内容如下 效果图: 1、引用自定义组件 import img0 from '../assets/img.jpg...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作