.NET MVC 验证码

验证码示例图片

效果差不多就这样,接下来直接上代码。

验证码生成器

  1. public class ValidateCode
  2. {
  3. public static ValidateCode Default = new ValidateCode();
  4. public int ImageWidth { get; set; }
  5. public int ImageHeight { get; set; }
  6. public string Letters { get; set; }
  7. public int CodeLength { get; set; }
  8. private Random r = new Random();
  9. public ValidateCode()
  10. {
  11. ImageWidth ;
  12. ImageHeight ;
  13. CodeLength ;
  14. Letters = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ1234567890";
  15. }
  16. public string GetValidationCode()
  17. {
  18. //合法随机显示字符列表
  19. System.Text.StringBuilder s = new System.Text.StringBuilder();
  20. //将随机生成的字符串绘制到图片上
  21. ; i < CodeLength; i++)
  22. {
  23. s));
  24. }
  25. return s.ToString();
  26. }
  27. public byte[] GetValidationImage(string codeString)
  28. {
  29. //设置输出流图片格式
  30. var b = new System.Drawing.Bitmap(ImageWidth, ImageHeight);
  31. var g = System.Drawing.Graphics.FromImage(b);
  32. );
  33. );
  34. );
  35. g);
  36. var font , System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);
  37. //合法随机显示字符列表
  38. //将随机生成的字符串绘制到图片上
  39. ; i < codeString.Length; i++)
  40. {
  41. );
  42. );
  43. );
  44. );
  45. );
  46. );
  47. g ));
  48. }
  49. //生成干扰线条
  50. var pen );
  51. ; i++)
  52. {
  53. g)));
  54. }
  55. var stream = new System.IO.MemoryStream();
  56. b.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
  57. g.Dispose();
  58. b.Dispose();
  59. //输出图片流
  60. return stream.ToArray();
  61. }
  62. }

使用方法

  1. public ActionResult validateCode() //创建一个action用于返回验证码图片
  2. {
  3. string validateCode = ValidateCode.Default.GetValidationCode(); //获取验证码
  4. Session["LoginValidateCode"] = validateCode; //将验证码保存到Session中
  5. return File(ValidateCode.Default.GetValidationImage(validateCode), @"image/jpeg"); //返回验证码图片
  6. }
  7. //直接将这个action 的地址赋值给img标签就可以了,例如 <img src="http://localhost:5695/home/validateCode" alt="">
  8. public ActionResult Login(string validateCode)
  9. {
  10. if (String.IsNullOrEmpty(Session["LoginValidateCode"].ToString()))
  11. {
  12. return Content("你登录页面停留的时间过久页已经超时");
  13. }
  14. else if (!Session["LoginValidateCode"].ToString().Equals(validateCode, StringComparison.CurrentCultureIgnoreCase))
  15. {
  16. return Content("验证码错误");
  17. }
  18. return RedirectToAction("Index"); //成功
  19. }

.NET MVC 验证码的更多相关文章

  1. MVC 验证码实现( 简易版)

    现在网站上越来越多的验证码,使用场景也是越来越多,登陆.注册.上传.下载...等等地方,都有可能大量使用到验证码,那么制作验证码到底有多简单呢?我们一起来看下最简易版的验证码实现过程- 验证码的基本步 ...

  2. ASP.NET MVC验证码演示(Ver2)

    前一版本<ASP.NET MVC验证码演示>http://www.cnblogs.com/insus/p/3622116.html,Insus.NET还是使用了Generic handle ...

  3. MVC验证码的编写

    主要是相互学习一下mvc,希望各位大神指导 /// <summary> /// 生成随机数字 /// </summary> /// <returns>随机数字< ...

  4. ASP.NET MVC验证码演示

    我们在网站登录或理一个评论时,可以放置一个验证码(Captcha),可以为系统免去那些恶意刷新等功能. 今次Insus.NET在asp.net mvc应用程序实现与演示验证码的产生以及应用等 . 前天 ...

  5. ASP.NET mvc 验证码 (转)

    ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...

  6. mvc验证码图片生成

    /// <summary> ///生成验证码 /// </summary> public class VerifyCode { /// <summary> /// ...

  7. asp.net mvc 验证码

    效果图 验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // Validat ...

  8. 简单C#、asp.net mvc验证码的实现

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;u ...

  9. C# mvc 验证码3

    //// <summary> /// 生成验证码 /// </summary> /// <param name="length">指定验证码的长 ...

随机推荐

  1. z-index失效的情况

    1.父标签 position属性为relative: 2.问题标签无position属性(不包括static): 3.问题标签含有浮动(float)属性. 4.问题标签的祖先标签的z-index值比较 ...

  2. redis之(十一)redis实现缓存的功能

    [一]redis实现缓存的原理 --->利用键的失效时间设置实现缓存技术 --->由于redis的内存有限,可以在redis的配置文件里设置maxmemory的参数.来限制redis最大可 ...

  3. 微信小程序-如何自定义导航栏(navigationStyle)?

    小程序是越来越开放了,微信版本 6.6.0可以自定义导航? 先了解下app.json中window配置navigationStyle属性,即导航栏样式,仅支持 default/custom.custo ...

  4. PHP PDO类

    <?php //数据库连接类,不建议直接使用DB,而是对DB封装一层 //这个类不会被污染,不会被直接调用 class DB { //pdo对象 private $_pdo = null; // ...

  5. 关于在C#中对类中的隐藏基类方法和重写方法的理解

    最近在学习C#,在C#中的类看到重写和隐藏基类的方法这些概念.才开始感觉自己不是很理解这些概念.也区分不开这些概念.通过自己的查找资料和练习后.慢慢的理解了类中的隐藏和重写这个概念.在C#中只有在基类 ...

  6. 是时候升级你的Js工具了-分页【基于JQ】

    好久没有来逛园子,也好久没有更新博客,就像沉睡已久的人忽然被叫醒,忽然就被园友的回复惊醒了.园友提出了关于我之前一篇文章的疑问——可那已经是半年以前的博客了,加上我一直觉得分享给大家的应该是我最新的思 ...

  7. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  8. 洛谷P1880 [NOI1995] 石子合并 [DP,前缀和]

    题目传送门 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆 ...

  9. div垂直居中的方法

    在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...

  10. 并发系列4-大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?【石杉的架构笔记】