.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. [PAT] 1143 Lowest Common Ancestor(30 分)1145 Hashing - Average Search Time(25 分)

    1145 Hashing - Average Search Time(25 分)The task of this problem is simple: insert a sequence of dis ...

  2. 在cmd 中输入了错误mysql命令后,如何退出?

    例如: mysql> select * from tb_name          '>          '>          '>          '> 由于输错 ...

  3. poj 1182 (扩展并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 58979   Accepted: 17247 Description ...

  4. WordPress 一键置顶文章(推荐用SM Sticky Clicky Star)

    在 WordPress入门 之 发布新文章和管理文章 中,倡萌已经简单提到可以在文章编辑界面或者快速编辑界面设置置顶文章,但是如果你想在后台文章列表中添加一键置顶文章的功能,不妨试试 Quick St ...

  5. 760. Find Anagram Mappings

    Given two lists Aand B, and B is an anagram of A. B is an anagram of A means B is made by randomizin ...

  6. 【JBPM4】EL表达式的使用,实现JAVA与JPDL的交互

    user.java实体类 private String kezhang; private String zhuren; /...完善set get 方法.../ 创建流程实例 //创建流程引擎 Pro ...

  7. LoadRunner中常用函数参考手册

    基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request w ...

  8. Genymotion的2个问题及解决方法

    问题一:Unable to connect to your virtual device 解决方法:基本都是内存不够导致的,在virtualbox中调整对应虚拟机的内存,确保任务管理器中的性能一项中剩 ...

  9. Jenkins发布PHP代码

    实验环境 10.0.0.12 Jenkins服务器 10.0.0.13 远程服务器 一个远程的公开的git仓库(php代码在这个仓库里) 一.检查插件是否安装并安装插件 在通过Jenkins发布php ...

  10. OpenStack 镜像服务 Glance部署(七)

    创建虚拟机我们需要有glance的支持,因为glance是提供镜像的服务. Glance有两个比较重要的服务: Glance-api:接受云系统镜像的构建.删除.读取请求 Glance-Registr ...