1.生成验证码类

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using System.IO;
using System.Drawing;
using System.Web; namespace SimpleNews.FrontEnd
{
public class ToolController : MyControllerBase
{
/// <summary>
/// 生成验证码字符串
/// </summary>
/// <param name="codeLen">验证码字符长度</param>
/// <returns>返回验证码字符串</returns>
private static string MakeCode(int codeLen)
{
if (codeLen < )
{
return string.Empty;
}
int number;
StringBuilder sbCheckCode = new StringBuilder();
Random random = new Random(); for (int index = ; index < codeLen; index++)
{
number = random.Next(); if (number % == )
{
sbCheckCode.Append((char)('' + (char)(number % ))); //生成数字
}
else
{
sbCheckCode.Append((char)('A' + (char)(number % ))); //生成字母
}
}
return sbCheckCode.ToString();
} ///<summary>
/// 获取验证码图片流
/// </summary>
/// <param name="checkCode">验证码字符串</param>
/// <returns>返回验证码图片流</returns>
public static MemoryStream CreateCodeImg(string checkCode)
{
if (string.IsNullOrEmpty(checkCode))
{
return null;
}
Bitmap image = new Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), );
Graphics graphic = Graphics.FromImage(image);
try
{
Random random = new Random();
graphic.Clear(Color.White);
int x1 = , y1 = , x2 = , y2 = ;
for (int index = ; index < ; index++)
{
x1 = random.Next(image.Width);
x2 = random.Next(image.Width);
y1 = random.Next(image.Height);
y2 = random.Next(image.Height); graphic.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new Font("Arial", , (FontStyle.Bold | FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(, , image.Width, image.Height), Color.Red, Color.DarkRed, 1.2f, true);
graphic.DrawString(checkCode, font, brush, , ); int x = ;
int y = ; //画图片的前景噪音点
for (int i = ; i < ; i++)
{
x = random.Next(image.Width);
y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
graphic.DrawRectangle(new Pen(Color.Silver), , , image.Width - , image.Height - );
//将图片验证码保存为流Stream返回
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms;
}
finally
{
graphic.Dispose();
image.Dispose();
}
} /// <summary>
/// 获取验证码
/// </summary>
/// <returns></returns>
public ActionResult GetValidateCode()
{
string code = MakeCode();
Session["ValidateCode"] = code;
MemoryStream ms = CreateCodeImg(code);
return File(ms.ToArray(), @"image/jpeg");
} }
}

2.前端Html页面

 <span>验证码:<input name="ValidateCode" type="text" value="" class="input2" id="txtValidateCode" size="" maxlength=""   >
<img src="../Tool/GetValidateCode" style="cursor: pointer;" name="checkcode" border=""
id="valiCode" alt="验证码" class="Ysm" />
</span>
  $(function () {
$("#valiCode").bind("click", function () {
this.src = "../Tool/GetValidateCode?time=" + (new Date()).getTime();
});
});

3.后台验证输入的验证码

 string validateCode = (string)Request.Form["ValidateCode"]??"";
if (string.IsNullOrEmpty(validateCode))
{
ModelState.AddModelError("validateCodeError","验证码错误!");
return View();
}
if (Session["ValidateCode"]!=null&&Session["ValidateCode"].ToString().ToLower() != validateCode.ToLower())
{
ModelState.AddModelError("validateCodeError", "验证码错误!");
return View();
}

Asp.net mvc生成验证码的更多相关文章

  1. (一)【转】asp.net mvc生成验证码

    网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中.   ...

  2. ASP.NET MVC 生成验证码

    using System.Web.Mvc; using System.Drawing; using System; using System.Drawing.Imaging; using Models ...

  3. ASP.Net MVC 生成安全验证码

    ---------html <td>验证码:</td>            <td>                <img src="/Logi ...

  4. ASP.NET MVC生成安全验证码

    html部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. ASP.NET MVC5 生成验证码

    1 ValidateCode.cs using System; using System.Drawing; using System.Drawing.Drawing2D; using System.D ...

  6. C#工具:ASP.NET MVC生成图片验证码

    1.复制下列代码,拷贝到控制器中. #region 生成验证码图片 // [OutputCache(Location = OutputCacheLocation.None, Duration = 0, ...

  7. ASP.NET MVC 生成EML文件

    需求: 点发送邮件按钮的时候, 自动在客户端电脑打开默认邮件的窗口,并且把内容和附件都附加上去. 解决方案: 尝试使用过Microsoft.Office.Interop.Outlook 和 MPAI. ...

  8. asp.net mvc 生成条形码

    using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...

  9. Asp.net MVC 生成zip并下载

    前面有生成Excel或Word的示例,所以就不再重新写了. 这里只提供将指定文件以ZIP的方式下载. 创建一个 Zip工具类 public class ZIPCompressUtil { public ...

随机推荐

  1. ADF_ManagedBean的概念和管理(概念)

    20150623 Created By BaoXinjian

  2. mysql备份还原数据库

    1.备份数据库 mysqldump -u root -p test>/home/victor/test.sql 说明:如果提示找不到mysqldump命令,先用一条find命令查找mysqldu ...

  3. Linux nfs配置

    ***************节点2的arch2目录挂载到节点1下.那么节点2是主节点1是备******** 10.230.39.234(节点1)cat /etc/exports /arch2 10. ...

  4. MATLAB那些常见的命令

    1.clear :清除内存变量和函数,也就是把WorkSpace的变量给清空: 2.clc :清楚当前Matlab命令窗口的内容:相当于清楚屏幕吧,重新开始,简洁一点,注意clc是不清 楚变量的.一般 ...

  5. PaintCode调研

    1.   背景 PaintCode是一款面向iOS和Mac应用开发者及设计师的矢量图形可视化开发工具.它可以让设计师把设计好的psd文件直接导入该工具,然后生成用Quartz 2D 产生的object ...

  6. 64. ZigZag Conversion

    ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given nu ...

  7. [EventBus源码解析] EventBus.post 方法详述

    前情概要 上一篇blog我们了解了EventBus中register/unregister的过程,对EventBus如何实现观察者模式有了基本的认识.今天我们来看一下它是如何分发一个特定事件的,即po ...

  8. appium+python:自己写的一个滑动控件的方式

    #调用方式roll_ele("ID","ele_id","7","up",3)#将控件分为7格,从底部倒数第二格向上滑动 ...

  9. js添加广告模块,随页面移动而移动

    实现如下的效果,一般用于广告, 这是通过运动来实现的,大家可以先自己写写,再看看和小编我写的是不是同一个思想 <style> #div1{ width:100px; height:100p ...

  10. Thinkphp源码分析系列–开篇

    目前国内比较流行的php框架由thinkphp,yii,Zend Framework,CodeIgniter等.一直觉得自己在php方面还是一个小学生,只会用别人的框架,自己也没有写过,当然不是自己不 ...