Asp.net mvc生成验证码
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生成验证码的更多相关文章
- (一)【转】asp.net mvc生成验证码
网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中. ...
- ASP.NET MVC 生成验证码
using System.Web.Mvc; using System.Drawing; using System; using System.Drawing.Imaging; using Models ...
- ASP.Net MVC 生成安全验证码
---------html <td>验证码:</td> <td> <img src="/Logi ...
- ASP.NET MVC生成安全验证码
html部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- ASP.NET MVC5 生成验证码
1 ValidateCode.cs using System; using System.Drawing; using System.Drawing.Drawing2D; using System.D ...
- C#工具:ASP.NET MVC生成图片验证码
1.复制下列代码,拷贝到控制器中. #region 生成验证码图片 // [OutputCache(Location = OutputCacheLocation.None, Duration = 0, ...
- ASP.NET MVC 生成EML文件
需求: 点发送邮件按钮的时候, 自动在客户端电脑打开默认邮件的窗口,并且把内容和附件都附加上去. 解决方案: 尝试使用过Microsoft.Office.Interop.Outlook 和 MPAI. ...
- asp.net mvc 生成条形码
using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...
- Asp.net MVC 生成zip并下载
前面有生成Excel或Word的示例,所以就不再重新写了. 这里只提供将指定文件以ZIP的方式下载. 创建一个 Zip工具类 public class ZIPCompressUtil { public ...
随机推荐
- Non-ASCII characters are not allowed outside of literals and identifiers
出现这种问题,一般是在代码里面非注释的地方,出现了非ascii字符. 比较常见的情况是,在代码中出现了中文字符.比如在引用字符串时,用了中文的引号.或者在一行代码结尾处,使用了中文的分号. 这种问题在 ...
- 一个可以设置所有子控件是否可以点击的Layout的实现
http://www.cnblogs.com/csonezp/p/4956315.html 最近在做一个功能,想在某个状态设置整个界面不可点击,后台任务执行完毕后再可以点击. 最直观的想法是直接让所有 ...
- AndroidManifest.xml
一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...
- 【原】安装mongo的php插件
http://pecl.php.net/package/mongo https://github.com/mongodb/mongo-php-driver/tarball/master 1. 安装mo ...
- myeclipse自动排版
myeclipse代码排版方式有两种: 1. ctr+f 实现自动排版: 2. myeclipse->Preference->Java->Editor->Sava Action ...
- python笔记一
好奇,想一探究竟.安装就出点小问题,win7,64位,一直卡在这里不动了? 只好取消.第二天安装仍是如此. 于是下载Windows6.1-KB2999226-x64.msu,安装,仍卡顿不动: 于是找 ...
- Ibatis 测试出SQL
String sql = Brg.Global.Map.BaseBatis.GetRuntimeSql("select_T_JewelleryProductType", _Mode ...
- JS函数arguments数组获得实际传参数个数
JS与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JS就灵活多了,可以随意传参,实参比形参少或多都不会报错. 实参比形参多不会报错 ? 1 2 3 4 5 function say(a ...
- HIS与CIS的区别与联系
医院的医疗信息系统总体可以分为两类:一类是关于医院管理运作的,另一类是关于临床医疗护理的,即面向医院管理和病人管理,前者被称为HIS(医院信息系统),后者被称为CIS(临床信息系统).HIS是以经济核 ...
- 【转载】C++ function、bind和lambda表达式
本篇随笔为转载,原贴地址:C++ function.bind和lambda表达式. 本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制 ...