在开发CRM客户关系管理系统中自写的C#验证码控件

在上个月根据需求文档做CRM客户关系管理系统时,写的一个验证码控件,可以有效防止暴力破解登录,控件比较简单易懂,基本上每句我都写了注释,需要的同学直接复制下面的代码到VS里,整理一下格式即可!

效果图:

代码:

public void ProcessRequest(HttpContext context)
{
//设置输出格式
context.Response.ContentType = "image/jpeg";
//创建图片并且设置大小
Bitmap map = new Bitmap(60, 20);
//在创建的图片上创建内容
Graphics gra = Graphics.FromImage(map);
//用FillRectangle方法填充图片背景
gra.FillRectangle(new SolidBrush(Color.White), 0, 0, 60, 20);
//创建一个字符串,用于被随机抽取内容
string Zf = "0123456789";
//实例化随机数方法
Random rd = new Random();
//设置一个字符串,储存被随机调出的内容
string a = "";
//for循环,随机取4个内容,相加到a中
for (int i = 0; i < 4; i++)
{
int index = rd.Next(0, Zf.Length);
a += Zf[index];
}
//设置图片内容的格式,包括字体,字体颜色,位置
gra.DrawString(a.ToString(), new Font("宋体", 15), new SolidBrush(Color.Blue), 6, 0);
//增加干扰点
for (int i = 0; i < 55; i++)
{
map.SetPixel(rd.Next(0, 60), rd.Next(0, 20), Color.Blue);
}
//增加干扰线
gra.DrawLine(new Pen(new SolidBrush(Color.Black)), rd.Next(0, 60), rd.Next(0, 20), rd.Next(0, 60), rd.Next(0, 20));
//实例化一个新文档流
MemoryStream mem = new MemoryStream();
//将图片转化为二进制格式
map.Save(mem, ImageFormat.Jpeg);
//将验证码储存为session,以备对比使用
context.Session["yzm"] = a;
//向页面输出二进制图片格式文档流,文档流是一个数组格式
context.Response.BinaryWrite(mem.ToArray());
}
THE END