首页后端开发ASP.NET验证码类在asp.net mvc中的使用

验证码类在asp.net mvc中的使用

时间2024-01-30 15:10:03发布访客分类ASP.NET浏览1082
导读:收集整理的这篇文章主要介绍了验证码类在asp.net mvc中的使用,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了asp.net mvc验证码类使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下验证码...
收集整理的这篇文章主要介绍了验证码类在asp.net mvc中的使用,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了asp.net mvc验证码类使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

验证码类


namespace QJW.VerifyCode{
  //用法:  //public FileContentResult CreateValidate()  //{
      //  ValidateCode vCode = new ValidateCode();
      //  string code = vCode.CreateValidateCode(5);
      //  Session["ValidateCode"] = code;
      //  byte[] bytes = vCode.CreateValidateGraphic(code);
      //  return File(bytes, "image/JPEG");
  //}
  public class ValidateCode  {
    public ValidateCode()    {
    }
        /// summary>
        /// 验证码的最大长度    /// /summary>
    public int MaxLength    {
      get {
     return 10;
 }
    }
        /// summary>
        /// 验证码的最小长度    /// /summary>
    public int MinLength    {
      get {
     return 1;
 }
    }
        /// summary>
        /// 生成验证码    /// /summary>
        /// param name="length">
    指定验证码的长度/param>
        /// returns>
    /returns>
    public string CreateValidateCode(int length)    {
          int[] randMembers = new int[length];
          int[] validateNums = new int[length];
          string validateNumberStr = "";
          //生成起始序列值      int seekSeek = unchecked((int)DateTime.Now.Ticks);
          Random seekRand = new Random(seekSeek);
          int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
          int[] seeks = new int[length];
          for (int i = 0;
     i  length;
 i++)      {
            beginSeek += 10000;
            seeks[i] = beginSeek;
      }
          //生成随机数字      for (int i = 0;
     i  length;
 i++)      {
            Random rand = new Random(seeks[i]);
            int pownum = 1 * (int)Math.Pow(10, length);
            randMembers[i] = rand.Next(pownum, Int32.MaxValue);
      }
          //抽取随机数字      for (int i = 0;
     i  length;
 i++)      {
            string numStr = randMembers[i].ToString();
            int nuMLength = numStr.Length;
            Random rand = new Random();
            int numPosITion = rand.Next(0, numLength - 1);
            validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
      }
          //生成验证码      for (int i = 0;
     i  length;
 i++)      {
            validateNumberStr += validateNums[i].ToString();
      }
          return validateNumberStr;
    }
        /// summary>
        /// 创建验证码的图片    /// /summary>
        /// param name="containsPage">
    要输出到的page对象/param>
        /// param name="validateNum">
    验证码/param>
    public byte[] CreateValidateGraphic(string validateCode)    {
          Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
          Graphics g = Graphics.FromImage(image);
      try      {
            //生成随机生成器        Random random = new Random();
            //清空图片背景色        g.Clear(Color.White);
            //画图片的干扰线        for (int i = 0;
     i  25;
 i++)        {
              int x1 = random.Next(image.Width);
              int x2 = random.Next(image.Width);
              int y1 = random.Next(image.Height);
              int y2 = random.Next(image.Height);
              g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
        }
            Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
            Lineargradientbrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),         Color.Blue, Color.Darkred, 1.2f, true);
            g.DrawString(validateCode, font, brush, 3, 2);
            //画图片的前景干扰点        for (int i = 0;
     i  100;
 i++)        {
              int x = random.Next(image.Width);
              int y = random.Next(image.Height);
              image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }
            //画图片的边框线        g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
            //保存图片数据        MemoryStream stream = new MemoryStream();
            image.Save(stream, ImageFormat.Jpeg);
            //输出图片流        return stream.ToArray();
      }
      finally      {
            g.Dispose();
            image.Dispose();
      }
    }
        /// summary>
        /// 得到验证码图片的长度    /// /summary>
        /// param name="validateNumLength">
    验证码的长度/param>
        /// returns>
    /returns>
    public static int GetImageWidth(int validateNumLength)    {
          return (int)(validateNumLength * 12.0);
    }
        /// summary>
        /// 得到验证码的高度    /// /summary>
        /// returns>
    /returns>
    public static double GetImageHeight()    {
          return 22.5;
    }
  }
}
    

使用方法


    public FileContentResult CreateValidate()    {
          ValidateCode vCode = new ValidateCode();
          string code = vCode.CreateValidateCode(5);
          Session["ValidateCode"] = code;
          byte[] bytes = vCode.CreateValidateGraphic(code);
          return File(bytes, "image/JPEG");
    }
    

HTML
a href="javascript:; " onclick="reloadcode(); "> img id="safecode" src="/common/CreateValidate" alt="" /> /a>
视图JS


function reloadcode() {
        VAR verify = document.getElementById('safecode');
        verify.setattribute('src', '/common/CreateValidate?' + Math.random());
  }
    

以上就是验证码类在asp.net mvc中的使用的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

asp.net使用

若转载请注明出处: 验证码类在asp.net mvc中的使用
本文地址: https://pptw.com/jishu/592682.html
asp读取excel表格第x行第y列值 比较.NET中接口与类的区别

游客 回复需填写必要信息