在Asp.Net应用程序中,很多时候登陆页面以及其他安全重要操作的页面需要输入验证码,本文提供一个生成验证码图片的工具类,该工具类通过随机数生成验证码文本后,再通过C#中的图片处理类位图类,字体类,一个LinearGradientBrush类等生成验证码图片。

本文生成图片验证码的采用Asp.Net中的一般处理程序文件ashx的文件,此文件一般继承于IHttpHandler的接口,是Asp.Net中一种比较常用的处理文件,比起.ASPX等页文件来,用ashx的文件生成图片验证码更为高效。

Asp.Net生成图片验证码工具类具体实现如下:

public class Handler:IHttpHandler,System.Web.SessionState.IRequiresSessionState
{
/// <summary>
///产生用于验证码的随机数
/// </ summary>
/// <param name =“number”> < / param>
/// <returns> </ returns>
public string Get_Code(int number)
{
#
region string s =“0AaB1oCb3pqD2cErf4dFs5GetHI6gu7JKLvhMwNixO8PyQj9zRSkTUVlWmXYnZ”;
随机rand = new Random();
StringBuilder builder = new StringBuilder();
for(int i = ; i <number; i ++)
{
char code = s [rand.Next(s.Length)];
builder.Append(code.ToString());
}
return builder.ToString();
#endregion
} public void ProcessRequest(HttpContext context)
{ BLL_User userbll = new BLL_User();
string code = Get_Code(); //生成验证码的四位随机码
context.Session [“Code”] = code;
位图图像=新位图(,);
图形g = Graphics.FromImage(图像);
试试
{
g.Clear(Color.White);
随机rand = new Random();
for(int i = ; i <; i ++)
{
int x1 = rand.Next(Image.Width);
int x2 = rand.Next(Image.Width);
int y1 = rand.Next(Image.Height);
int y2 = rand.Next(Image.Height);
g.DrawLine(new Pen(Color.Silver),x1,y1,x2,y2);
}
Font font = new Font(“Arial”,,FontStyle.Italic);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(,,Image.Width,Image.Height),Color.Blue,Color.DarkRed,,true);
g.DrawString(代码,字体,画笔,,);
g.DrawRectangle(new Pen(Color.Silver),,,Image.Width - ,Image.Height - );
System.IO.MemoryStream stream = new System.IO.MemoryStream();
Image.Save(stream,ImageFormat.Gif);
context.Response.Clear();
context.Response.ContentType =“image / Gif”;
context.Response.BinaryWrite(stream.ToArray());
}
finally
{
g.Dispose();
Image.Dispose();
} } public BOOL IsReusable {
get {
return false;
}
} }

在上述代码中,.ashx的文件类继承了System.Web.SessionState.IRequiresSessionState接口,主要是为了能够在.ashx的文件中能访问到会话变量,并将生成好的验证码信息存入会话中。

在网络前端界面要生成二维码图片的时候,直接将IMG标签的图片路径的src属性指向这个ashx的文件,例如这个.ashx的文件在网络项目中存放在根目录并且命名为ValidateCode.ashx,则在HTML文件中直接如下形式即可生成验证码图片:

<img src =“ValidateCode.ashx”此处编写其他属性/>

备注:原文转载自博主个人站IT技术小趣屋,原文链接为Asp.Net生成图片验证码工具类_IT技术小趣屋

博主个人技术交流群:960640092,博主微信公众号如下:

【转载】Asp.Net生成图片验证码工具类的更多相关文章

  1. Java 验证码工具类

    package com.wuyu.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ...

  2. JAVA短信验证码 工具类

    MsgCodeUtil.java package com.hg.util; import com.soyea.enums.ResultEnum; import com.soyea.exception. ...

  3. ASP.NET的票据工具类FormsAuthenticationTicket

    票据是asp.net登录验证的一种方式,以前研究过,现在并不使用,今天发现了,记录一下. /*###################票据工具################### * 1.设置< ...

  4. C# 登陆验证码工具类VerifyCode

    using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; ...

  5. Vcode的生成工具类,生成制定长度验证码,图文验证码工具类

    public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...

  6. 转:Java生成图片验证码(有点仿QQ验证码的意思)

    http://blog.csdn.net/ruixue0117/article/details/22829557 java: VerifyCodeUtils.java package com.fro. ...

  7. Java 图片验证码工具

    package com.microwisdom.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics ...

  8. Java使用imageio、awt生成图片验证码

    1.生成验证码工具类 public class CheckCodeTool { private Integer width = 80; private Integer height = 38; pub ...

  9. Hutool中那些常用的工具类和方法

    Hutool中那些常用的工具类和方法 Hutool是一个Java工具包,它帮助我们简化每一行代码,避免重复造轮子.如果你有需要用到某些工具方法的时候,不妨在Hutool里面找找,可能就有.本文将对Hu ...

随机推荐

  1. Pandas | 13 索引和选择数据

    Pandas现在支持三种类型的多轴索引; 编号 索引 描述 1 .loc() 基于标签 2 .iloc() 基于整数 3 .ix() 基于标签和整数 .loc() Pandas提供了各种方法来完成基于 ...

  2. 复旦大学2018--2019学年第二学期(18级)高等代数II期末考试第六大题解答

    六.(本题10分)  设 $A$ 为 $n$ 阶实对称阵, 证明: $A$ 有 $n$ 个不同的特征值当且仅当对 $A$ 的任一特征值 $\lambda_0$ 及对应的特征向量 $\alpha$, 矩 ...

  3. C实现Linux之touch命令

    Linux 的 touch 命令用来修改文件时间戳,或者新建一个不存在的文件,使用方式如下: touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名 ...

  4. ssl证书转换cer转pem

    .pem证书转.cer证书 openssl x509 -outform der -in demo.pem -out demo.cer .cer证书转.pem证书 openssl x509 -infor ...

  5. Gamma阶段测试报告

    测试计划 Gamma阶段依然以场景测试为主.我们归纳了三条场景主线: 一.典型用户:查看 访问排名页面 / 搜索课程 查看课程页面 查看教师页面 为他人评论点赞或点踩 二.典型用户:评论 登录网站 搜 ...

  6. PHP处理SOAP

    1.获取functions try { $client = new SoapClient("http://www.fangbei.org/services/inquiryTracingAnd ...

  7. docker-compose可持续集成之nexus

    什么是 Nexus 概述 Nexus 是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问. 2016 年 4 月 6 日 Nexus 3.0 版本发布,相较 2.x 版本有了很大的改变 ...

  8. django中配置使用celery

    环境版本: windows7 x64 django 1.11.6 django-celery 3.2.2 工程结构说明:源码下载请访问https://i.cnblogs.com/Files.aspx ...

  9. javascript获取时间戳的方法

    javascript获取时间戳的方法<pre> START = new Date().getTime();</pre>这个是毫秒 除以1000就是秒啦

  10. VUE控件 VueTreeselect 参数options的数据转换

    VueTreeselect 控件 <Treeselect :options="options" :normalizer="normalizer" plac ...