手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >ASP.NET MVC验证码功能实现代码
ASP.NET MVC验证码功能实现代码
摘要:前台复制代码代码如下:换一张控制器复制代码代码如下:usingSystem;usingSystem.Collections.Generic;...

前台

复制代码 代码如下:

<img id="vcodeimg" src="http://www.jb51.netHome/VCode" width="70"

height="25" />

<span

>换一张</span>

控制器

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using Utility;

using Jellal**;

namespace sjlwebsite.Controllers

{

public class CommonController : Controller

{

#region 验证码

[OutputCache(Duration = 0)]

public ActionResult VCode()

{

string code = ValidateCode.CreateRandomCode(4);

Session["vcode"] = code;

ValidateCode.CreateImage(code);

return View();

}

public string GetCode()

{

return Session["vcode"].ToStr();

}

#endregion

}

}

验证码类

复制代码 代码如下:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace Utility

{

/// <summary>

/// 完美随机验证码 0.10

/// Verion:0.10

/// Description:随机生成设定验证码,并随机旋转一定角度,字体颜色不同

/// </summary>

public class ValidateCode

{

/// <summary>

/// 生成随机码

/// </summary>

/// <param name="length">随机码个数www.52mvc.com</param>

/// <returns></returns>

public static string CreateRandomCode(int length)

{

int rand;

char code;

string randomcode = String.Empty;

//生成一定长度的验证码

System.Random random = new Random();

for (int i = 0; i < length; i++)

{

rand = random.Next();

if (rand % 3 == 0)

{

code = (char)('A' + (char)(rand % 26));

}

else

{

code = (char)('0' + (char)(rand % 10));

}

randomcode += code.ToString();

}

return randomcode;

}

/// <summary>

/// 创建随机码图片

/// </summary>

/// <param name="randomcode">随机码</param>

public static void CreateImage(string randomcode)

{

int randAngle = 45; //随机转动角度

int mapwidth = (int)(randomcode.Length * 23);

Bitmap map = new Bitmap(mapwidth, 28);//创建图片背景

Graphics graph = Graphics.FromImage(map);

graph.Clear(Color.AliceBlue);//清除画面,填充背景

graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//画一个边框

//graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式

Random rand = new Random();

//背景噪点生成 www.jb51.net

Pen blackPen = new Pen(Color.LightGray, 0);

for (int i = 0; i < 50; i++)

{

int x = rand.Next(0, map.Width);

int y = rand.Next(0, map.Height);

graph.DrawRectangle(blackPen, x, y, 1, 1);

}

//验证码旋转,防止机器识别

char[] chars = randomcode.ToCharArray();//拆散字符串成单字符数组

//文字距中

StringFormat format = new StringFormat(StringFormatFlags.NoClip);

format.Alignment = StringAlignment.Center;

format.LineAlignment = StringAlignment.Center;

//定义颜色

Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };

//定义字体

string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };

for (int i = 0; i < chars.Length; i++)

{

int cindex = rand.Next(7);

int findex = rand.Next(5);

Font f = new System.Drawing.Font(font[findex], 13, System.Drawing.FontStyle.Bold);//字体样式(参数2为字体大小)

Brush b = new System.Drawing.SolidBrush(c[cindex]);

Point dot = new Point(16, 16);

//graph.DrawString(dot.X.ToString(),fontstyle,new SolidBrush(Color.Black),10,150);//测试X坐标显示间距的

float angle = rand.Next(-randAngle, randAngle);//转动的度数

graph.TranslateTransform(dot.X, dot.Y);//移动光标到指定位置

graph.RotateTransform(angle);

graph.DrawString(chars.ToString(), f, b, 1, 1, format);

//graph.DrawString(chars.ToString(),fontstyle,new SolidBrush(Color.Blue),1,1,format);

graph.RotateTransform(-angle);//转回去

graph.TranslateTransform(2, -dot.Y);//移动光标到指定位置

}

//graph.DrawString(randomcode,fontstyle,new SolidBrush(Color.Blue),2,2); //标准随机码

//生成图片

System.IO.MemoryStream ms = new System.IO.MemoryStream();

map.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);

HttpContext.Current.Response.ClearContent();

HttpContext.Current.Response.ContentType = "image/gif";

HttpContext.Current.Response.BinaryWrite(ms.ToArray());

graph.Dispose();

map.Dispose();

}

}

}

【ASP.NET MVC验证码功能实现代码】相关文章:

asp.net导出EXCEL的功能代码

.Net连接Oracle数据库的实现代码

ASP.NET 输出缓存移除的实例代码

ASP.NET MVC中将控制器分离到类库的实现

ASP.NET MVC3 实现全站重定向的简单方法

ASP.NET 运行.bat文件的实现方法

asp.net 文件下载实现代码

ASP.NET 页面中加添加用户控件的写法

Asp.Net Cache缓存使用代码

ASP.NET OutputCache详解

精品推荐
分类导航