【转载】Asp.Net生成图片验证码工具类
在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生成图片验证码工具类的更多相关文章
- Java 验证码工具类
package com.wuyu.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ...
- JAVA短信验证码 工具类
MsgCodeUtil.java package com.hg.util; import com.soyea.enums.ResultEnum; import com.soyea.exception. ...
- ASP.NET的票据工具类FormsAuthenticationTicket
票据是asp.net登录验证的一种方式,以前研究过,现在并不使用,今天发现了,记录一下. /*###################票据工具################### * 1.设置< ...
- C# 登陆验证码工具类VerifyCode
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; ...
- Vcode的生成工具类,生成制定长度验证码,图文验证码工具类
public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...
- 转:Java生成图片验证码(有点仿QQ验证码的意思)
http://blog.csdn.net/ruixue0117/article/details/22829557 java: VerifyCodeUtils.java package com.fro. ...
- Java 图片验证码工具
package com.microwisdom.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics ...
- Java使用imageio、awt生成图片验证码
1.生成验证码工具类 public class CheckCodeTool { private Integer width = 80; private Integer height = 38; pub ...
- Hutool中那些常用的工具类和方法
Hutool中那些常用的工具类和方法 Hutool是一个Java工具包,它帮助我们简化每一行代码,避免重复造轮子.如果你有需要用到某些工具方法的时候,不妨在Hutool里面找找,可能就有.本文将对Hu ...
随机推荐
- webpack 的安装与使用
这里使用webpack4.41.2 为例 一.安装webpack 1.本地安装,安装最新版本或特定版本 npm install --save-dev webpack npm install --sav ...
- swagger 配置- ssm
swagger 配置 - ssm swagger 是一个用来看接口的工具,具体效果如下,这里用的是swagger2 1.porm.xml <dependency> <groupId& ...
- React / Ant Design Pro 实现Canvas画布实时自适应
如何实现canvas根据父容器进行自适应? Ant Design的组件都提供了强大的自适应能力,为了对齐父组件,镶嵌在Ant Design组件里的canvas也需要能根据父级容器进行自适应的能力,页面 ...
- java 读写Parquet格式的数据 Parquet example
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOExce ...
- 关于Visual Studio源代码文件的行尾
我们都知道,UNIX只使用换行符(linefeed)来结束每一行,而DOS传统上使用CR+LF来结束每一行,Visual Studio应该完全在DOS世界中,但不管出于什么原因,当我们从代码服务器上获 ...
- CSS3中box-sizing属性的作用以及应用场景
盒模型box-sizing: 取值 1.content-box 默认值,标准盒模型,设置宽度为内容宽度,实际宽度为左右边距加上左右边框加上左右填充再加上内容宽度 2.border-box 设置宽度等于 ...
- 第10组 Alpha事后诸葛亮
一.组长博客链接 组长博客 二.总结思考 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的APP主要解决大学生闲置物品处理问题,定义的很清楚,用户 ...
- R地图包 maps
安装 maps install.packages(“maps”) 使用 maps library("maps") nz <- map_data("nz")
- Comet OJ - Contest #1 C 复读游戏(状态压缩)
题意 https://www.cometoj.com/contest/35/problem/C?problem_id=1498 思路 这题要用到一种比较小众的状压方法(没见过的话可能一时比较难想到). ...
- [算法模板]Kruskal重构树
[算法模板]Kruskal重构树 kruskal重构树是一个很常用的图论算法.主要用于解决u->v所有路径上最长边的最小值,就是找到\(u->v\)的一条路径,使路径上的最长边最小. 图片 ...