应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

handler实现一个简单的验证码

5983人阅读 2019/8/14 16:06 总访问:5182378 评论:0 收藏:0 手机
分类: .NET


handler代码如下:

  1. public class CodeHandler : IHttpHandler,IRequiresSessionState
  2.     {
  3.         public void ProcessRequest(HttpContext context)
  4.         {
  5.             context.Response.ContentType = "image/png";
  6.             Bitmap bt = new Bitmap(10036);
  7.             //通过图片拿到图片的画笔类
  8.             Graphics gp = Graphics.FromImage(bt);
  9.             //填充一个背景颜色
  10.             gp.FillRectangle(new SolidBrush(Color.Black), 0010036);
  11.             //产生一个字符串
  12.             string codestr = "";
  13.                         //构建大写小写与数字
  14.             List<int> codelist = new List<int>();
  15.             for (int i = 97, j = 65; i <= 122; i++, j++)
  16.             {
  17.                 codelist.Add(i);
  18.                 codelist.Add(j);
  19.             }
  20.             for (int i = 48; i <= 57; i++)
  21.             {
  22.                 codelist.Add(i);
  23.             }
  24.             //随机因子,随时因子一样随机数就一样,默认随机因子是时间
  25.             //for (int i = 0; i < 4; i++)
  26.             //{
  27.             //    Random random = new Random(Guid.NewGuid().GetHashCode());
  28.             //    int code = (char)random.Next(48, 123);
  29.             //    if (!codelist.Contains(code))
  30.             //    {
  31.             //        i--;
  32.             //        continue;
  33.             //    }
  34.             //    codestr += (char)code;
  35.             //}
  36.             
  37.             string codeStr = "";
  38.             Random random = new Random();
  39.             for (int i = 0; i < 4; i++)
  40.             {
  41.                 int charindex = random.Next(0, codeList.Count);
  42.                 codeStr += (char)codeList[charindex];
  43.             }
  44.             graphics.DrawString(codeStr, font, solidBrush, 258);
  45.             //产生干扰下
  46.             for (int i = 0; i < 3; i++)
  47.             {
  48.                 gp.DrawLine(new Pen(Color.White, 1), random2.Next(0100), random2.Next(036), random2.Next(0100), random2.Next(036));
  49.             }
  50.             //产生小字干扰
  51.             for (int i = 0; i < 10; i++)
  52.             {
  53.                 Random random = new Random(Guid.NewGuid().GetHashCode());
  54.                 int code = (char)random.Next(48123);
  55.                 if (!codelist.Contains(code))
  56.                 {
  57.                     i--;
  58.                     continue;
  59.                 }
  60.                 char lcode = (char)code;
  61.                 gp.DrawString(lcode+""new Font("宋体"8), new SolidBrush(Color.White), random2.Next(0100), random2.Next(036));
  62.             }
  63.             context.Session["codestr"] = codestr;
  64.             bt.Save(context.Response.OutputStream, ImageFormat.Png);
  65.         }
  66.         public bool IsReusable
  67.         {
  68.             get
  69.             {
  70.                 return false;
  71.             }
  72.         }
  73.     }

效果如下:



欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价