asp.net MVC 在Controller控制器中實(shí)現(xiàn)驗(yàn)證碼輸出功能
asp.net mvc項(xiàng)目使用到驗(yàn)證碼,為了讓以前的WebForm代碼能利用上代碼經(jīng)過稍微的改動(dòng)即可使用代碼如下:
using System; using System.Collections.Generic; using System.Web; using System.Web.Mvc; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; namespace Angel.Web.Controllers { public class CheckCodeController : Controller { // // GET: /CheckCode/ public ActionResult Index() { this.CreateCheckCodeImage(GenerateCheckCode()); return View(); } private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for (int i = 0; i < 5; i++) { number = random.Next(); if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); if (code == '0' || code == 'o' || code == 'L' || code == 'I') { i = i - 1; } else { checkCode += code.ToString(); } } // Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); Session.Contents["checkcode"] = checkCode; return checkCode; } private void CreateCheckCodeImage(string checkCode) { if (checkCode == null || checkCode.Trim() == String.Empty) return; System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); Graphics g = Graphics.FromImage(image); try { //生成隨機(jī)生成器 Random random = new Random(); //清空?qǐng)D片背景色 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 System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //畫圖片的前景噪音點(diǎn) 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); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } } }
最后別忘了session的獲取設(shè)置,需要在Global.asax.cs文件中新增如下代碼:
/// <summary> /// MVC為了獲取session參數(shù) /// </summary> public override void Init() { PostAuthenticateRequest += (s, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); base.Init(); } void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e) { HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); }
html頁面代碼:
html代碼
<img name="img1" id="img1" style="position:absolute;top:5px;right:36px!important;z-index:1000;" alt="單擊圖片刷新驗(yàn)證碼" src="CheckCode/Index" <br>onclick="JavaSccript:reloadImage('CheckCode/Index');" /><br><script type="text/javascript"> function reloadImage(url) { document.getElementById("img1").src = url + '?abc=' + Math.random(); } </script>
總結(jié)
以上所述是小編給大家介紹的asp.net MVC 在Controller控制器中實(shí)現(xiàn)驗(yàn)證碼輸出功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
上一篇:詳解MVC中為DropDownListFor設(shè)置選中項(xiàng)的方法
欄 目:ASP.NET
下一篇:ASP.NET MVC 開發(fā)微信支付H5的實(shí)現(xiàn)示例(外置瀏覽器支付)
本文標(biāo)題:asp.net MVC 在Controller控制器中實(shí)現(xiàn)驗(yàn)證碼輸出功能
本文地址:http://mengdiqiu.com.cn/a1/ASP_NET/10831.html
您可能感興趣的文章
- 01-11如何給asp.net core寫個(gè)簡單的健康檢查
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11ASP.NET Core靜態(tài)文件的使用方法
- 01-11asp.net Core3.0區(qū)域與路由配置的方法
- 01-11ASP.Net Core中使用枚舉類而不是枚舉的方法
- 01-11Asp.net core利用MediatR進(jìn)程內(nèi)發(fā)布/訂閱詳解
- 01-11ASP.NET Core中間件計(jì)算Http請(qǐng)求時(shí)間示例詳解
- 01-11asp.net core集成JWT的步驟記錄
- 01-11ASP.NET Core MVC學(xué)習(xí)教程之路由(Routing)
- 01-11ASP.NET Core實(shí)現(xiàn)自定義WebApi模型驗(yàn)證詳解


閱讀排行
本欄相關(guān)
- 01-11vscode extension插件開發(fā)詳解
- 01-11VsCode插件開發(fā)之插件初步通信的方法
- 01-11如何給asp.net core寫個(gè)簡單的健康檢查
- 01-11.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件
- 01-11淺析.Net Core中Json配置的自動(dòng)更新
- 01-11.NET開發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其
- 01-11.net core webapi jwt 更為清爽的認(rèn)證詳解
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11ASP.NET Core靜態(tài)文件的使用方法
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什