【转载】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 ...
随机推荐
- python基础语法17 面向对象4 多态,抽象类,鸭子类型,绑定方法classmethod与staticmethod,isinstance与issubclass,反射
多态 1.什么是多态? 多态指的是同一种类型的事物,不同的形态. 2.多态的目的: “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字). 多 ...
- 18-C#笔记-继承
1. 子类可以使用父类的成员和函数. 和C++不同,使用的是一个冒号 2. 不支持多重继承 但是可以通过接口(interface)这种结构实现.后续讲解. using System; namespac ...
- 【java异常】Unable to install breakpoint in
这个是断点失效,把那个断点双击清理掉就完了. 具体原因,以后再写.
- 原生php分页的封装,只封装函数,可适用所有的表
<?php/** * 封装分页函数 * $table [字符串] 表名 * @$size [数字][每页显示条数] */function fenye($table, $size){ $link ...
- CF598: div3解题报告
CF598:div3解题报告 A: Payment Without Change 思路: 按题意模拟即可. 代码: #include<bits/stdc++.h> using namesp ...
- 函数$f(x+1)$和$f(x-1)$的奇偶性
前言 廓清认知 1.函数\(y=f(x)\)的奇偶性 ①\(y=f(x)\)为奇函数,则满足\(f(-x)+f(x)=0\),即关于点\((0,0)\)对称: ②\(y=f(x)\)为偶函数,则满足\ ...
- centos7 中没有service iptables save指令来保存防火墙规则
解决方法: systemctl stop firewalld 关闭防火墙yum install iptables-services 安装 iptables 服务systemctl enable ip ...
- Linux下rpm及yum安装jdk
笔者使用的Linux操作系统为CentOS7,Linux中有三种安装jdk的方式,在这里笔者主要介绍两种方式,即rpm和yum安装及卸载jdk,还有一种是直接从官网下载 tar.gz 压缩文件上传到L ...
- UDF——输出每个单元的面法向量以及对应面上的节点
测试文件及源码下载链接: https://pan.baidu.com/s/1K-mD7-_ZkHUl21C2w3o-Bw 提取码: a7n2
- barbor部署
harbor 部署介绍: 1.版本信息 系统 :Centos 7.5 版本: harbor-offline-installer-v1.8.1 docker :docker-ce-18.06.2.ce- ...