栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > asp

asp.net mvc验证码类使用

asp 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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()
    {
    }
    /// 
    /// 验证码的最大长度
    /// 
    public int MaxLength
    {
      get { return 10; }
    }
    /// 
    /// 验证码的最小长度
    /// 
    public int MinLength
    {
      get { return 1; }
    }
    /// 
    /// 生成验证码
    /// 
    /// 指定验证码的长度
    /// 
    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;
    }
    /// 
    /// 创建验证码的图片
    /// 
    /// 要输出到的page对象
    /// 验证码
    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();
      }
    }
    /// 
    /// 得到验证码图片的长度
    /// 
    /// 验证码的长度
    /// 
    public static int GetImageWidth(int validateNumLength)
    {
      return (int)(validateNumLength * 12.0);
    }
    /// 
    /// 得到验证码的高度
    /// 
    /// 
    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
 
视图JS 

function reloadcode() {
    var verify = document.getElementById('safecode');
    verify.setAttribute('src', '/common/Createvalidate?' + Math.random());
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/55836.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号