.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. Python 分页功能

    自定义分页组件 """ 自定义分页组件的使用方法: pager_obj = Pagination(request.GET.get('page',1),len(HOST_L ...

  2. 自己编译生成k8s的rpm包

    我指的是以下几个安装包: -rw-r--r--. 1 root root 8976134 Jul 13 10:19 kubeadm-1.7.0-0.x86_64.rpm-rw-r--r--. 1 ro ...

  3. T-SQL备忘(6):常用内置函数

    日期和时间函数: 1.获取当前时间:GETDATE() select GETDATE() 返回: 2015-04-27 20:52:06.700 2.返回时间的部分(日.月.年) a.获取日: sel ...

  4. 前端读者 | 由setTimeout引发的JS引擎运行机制的研究

    本文来自 @xiaoyuze88 链接:http://xiaoyuze88.github.io/ 太久没碰代码了,那天想到关于循环调用setTimeout实现每隔一秒输出递增的数的那个问题,搞了搞,发 ...

  5. Nmap误报1720端口开放的原因

    在使用Nmap扫描服务器开放端口(全连接扫描)时,一直会发现误报1720端口开放,telnet也有时会连接成功.而实际上服务器并未开启此端口.经过查阅资料,确定原因如下: H.323协议在负载中放入了 ...

  6. EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)

    D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...

  7. 拜拜了,GOPATH君!新版本Golang的包管理入门教程

    Go 1.11和1.12实现了对包管理的初步支持,Go的新依赖管理系统使依赖版本信息明确且易于管理.Using Go Modules - The Go Blog 新的包管理模式有什么不同? 作为Go语 ...

  8. go chapter 1

    case 1 // helloworld.go package main import "fmt" func main() { fmt.Println("Hello, 世 ...

  9. Ghostscript 中 ps2pdf 命令在 windows msys 下的运行错误问题。

    前两天看到了 miloyip/game-programmer 这个项目觉得特别有用,真是好东西,明确了指出了学习路线,尤其是新手.不过打开看,有些书对应的亚马逊链接是无效的,比如<Tricks ...

  10. 【数据结构】 最小生成树(二)——kruskal算法

    上一期说完了什么是最小生成树,这一期咱们来介绍求最小生成树的算法:kruskal算法,适用于稀疏图,也就是同样个数的节点,边越少就越快,到了数据结构与算法这个阶段了,做题靠的就是速度快,时间复杂度小. ...