欢乐狗 发表于 2022-11-28 13:07:50

.NET 6 实现滑动验证码(二)、基本数据

上一节,介绍了滑动验证码的基本情况,也创建了一个.NET 6的工程。本节内容是创建一些基础类。

目录

[*]CaptchaData.cs
[*]CaptchaValidateData.cs
[*]ImageCaptchaInfo.cs
[*]Resource.cs
[*]SliderImageCaptchaInfo.cs
[*]SlideTrack.cs
[*]TemplatePair.cs
[*]Track.cs

本节创建的类全部在工程的Model目录下:
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    {      ///         /// 凹槽x坐标      ///         public int X { get; set; }      ///         /// 凹槽y坐标      ///         public int Y { get; set; }      ///         /// 凹槽位置百分比      ///         public float Percent      {            get            {                if (BackgroundImageWidth
页: [1]
查看完整版本: .NET 6 实现滑动验证码(二)、基本数据