ASP.NET MVC图片验证码辅助类

辅助方法类:

        /// /// 验证码图片/// /// public ActionResult SecurityCode(){string oldcode = TempData["SecurityCode"] as string;string code = CreateRandomCode(5);TempData["SecurityCode"] = code;return File(CreateValidateGraphic(code), "Image/Jpeg");}/// /// 生成随机的字符串/// /// 字符串数量/// public string CreateRandomCode(int codeCount){string allChar = "1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";string[] allCharArray = allChar.Split(',');string randomCode = "";int temp = -1;Random rand = new Random();for (int i = 0; i < codeCount; i++){if (temp != -1){rand = new Random(i * temp * ((int)DateTime.Now.Ticks));}int t = rand.Next(35);if (temp == t){return CreateRandomCode(codeCount);}temp = t;randomCode += allCharArray[t];}return randomCode;}/// /// 生成验证码图片/// /// /// public byte[] CreateValidateGraphic(string validateCode){Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 16.0), 27);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", 13, (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();}}

调用辅助方法类并验证:

if (String.Compare(TempData["SecurityCode"].ToString(), regUser.SecurityCode, true) != 0){ModelState.AddModelError("SecurityCode", "验证码不正确!");return View(regUser);
}

前端代码:

验证码
@Html.TextBoxFor(m => m.SecurityCode, new { @class = "textInputSmall" })@Html.ValidationMessageFor(model => model.SecurityCode)

验证码图片
看不清换一张


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部