.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. LockSupport学习

    LockSupport工具类定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能.Java锁和同步器框架的核心工具类AQS:AbstractQueueSynchronizer,就是通过调 ...

  2. 深入解析当下大热的前后端分离组件django-rest_framework系列二

    视图三部曲 一部曲 · 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framework.resp ...

  3. 解决错误:此用户名包含无效字符,请输入有效的用户名。wordpress不能注册中文用户名的问题

    wordpress在默认情况下不支持中文用户名,就是在后台添加用户的时候,如果用户名包含中文,则显示”错误:此用户名包含无效字符,请输入有效的用户名.”如何解决这个问题呢? 不用插件的话就需要修改一个 ...

  4. nginx 开启 gzip

    gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_types text/plain applicatio ...

  5. Mybatis框架-2

    1.Mybatis中的接口形式 在Mybatis中使用接口形式将通过代理对象调用方法,从而实现sql的执行 1)定义一个接口 package mapper; import java.util.List ...

  6. BZOJ2120/洛谷P1903 [国家集训队] 数颜色 [带修改莫队]

    BZOJ传送门:洛谷传送门 数颜色 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R ...

  7. 【BZOJ 1004】 1004: [HNOI2008]Cards (置换、burnside引理)

    1004: [HNOI2008]Cards Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很 ...

  8. 【SPOJ 8093】Sevenk Love Oimaster

    http://www.spoj.com/problems/JZPGYZ/ 查询一个询问串在上面n个串中多少个串的子串. 后缀数组+主席树,常熟有点大... 建出广义SAM,利用parent树的dfs序 ...

  9. [Luogu1979][NOIP2013]华容道(BFS+SPFA)

    考虑从起点到终点的过程,一定是先将空格子移到指定格子旁边,和指定格子交换,再移到下一个指定格子要到的地方,再交换,如此反复. 于是问题分为两个部分: 1.给定两个曼哈顿距离为2的格子求最短路,BFS即 ...

  10. 【树形dp】Distance in Tree

    [CF161.D] Distance in Tree time limit per test 3 seconds memory limit per test 512 megabytes A tree  ...