ASP.NET验证码有哪些
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇内容介绍了"ASP.NET验证码有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.GSC_
千家信息网最后更新 2025年11月13日ASP.NET验证码有哪些
本篇内容介绍了"ASP.NET验证码有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.GSC_WebControlLibrary 这是在网上找到的一个控件,非常好用。但是效果不是特别好(见下图。
)虽然容易使用,所有的属性都可以像控件一样设置,但是可用性不太高。用户不能自定义,而且看起来这个验证码效果不太好。
效果:

2.用一个页面生成图片,另一个页面调用,验证码存入cookie,调用时取cookie对比验证.这个用户就可以按自己的喜好更改效果和验证码的长度了。
效果如图:

CheckCode.aspx代码如下:
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;public partial class Tools_CheckCode : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { this.CreateCheckCodeImage(GenerateCheckCode()); } private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for (int i = 0; i < 5; i++) { number = random.Next(); if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); return checkCode; } private void CreateCheckCodeImage(string checkCode) { if (checkCode == null || checkCode.Trim() == String.Empty) return; System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 for (int i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.GreenYellow), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Verdana", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点 for (int i = 0; i < 80; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Red), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } }}然后在需要使用的页面引用:
UseCheckCode.aspx
3.用web handler生成图片。这个其实和前面的意思大致差不多,调用方法也基本和2一样,不同的是,它的验证码是存入Session的。供学习参考。
效果图如下:
ValidateImageHandler.ashx
%@ WebHandler Language="C#" Class="ValidateImageHandler" %>using System;using System.Web;using System.Web.SessionState;using System.Drawing;using System.Drawing.Imaging;using System.Text;////// ValidateImageHandler 生成网站验证码功能/// public class ValidateImageHandler : IHttpHandler, IRequiresSessionState{ int intLength = 5; //长度 string strIdentify = "Identify"; //随机字串存储键值,以便存储到Session中 public ValidateImageHandler() { } ////// 生成验证图片核心代码 /// /// public void ProcessRequest(HttpContext hc) { //设置输出流图片格式 hc.Response.ContentType = "image/gif"; Bitmap b = new Bitmap(200, 60); Graphics g = Graphics.FromImage(b); g.FillRectangle(new SolidBrush(Color.YellowGreen), 0, 0, 200, 60); Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel); Random r = new Random(); //合法随机显示字符列表 string strLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; StringBuilder s = new StringBuilder(); //将随机生成的字符串绘制到图片上 for (int i = 0; i < intLength; i++) { s.Append(strLetters.Substring(r.Next(0, strLetters.Length - 1), 1)); g.DrawString(s[s.Length - 1].ToString(), font, new SolidBrush(Color.Blue), i * 38, r.Next(0, 15)); } //生成干扰线条 Pen pen = new Pen(new SolidBrush(Color.Blue), 2); for (int i = 0; i < 10; i++) { g.DrawLine(pen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59))); } b.Save(hc.Response.OutputStream, ImageFormat.Gif); hc.Session[strIdentify] = s.ToString(); //先保存在Session中,验证与用户输入是否一致 hc.Response.End(); } ////// 表示此类实例是否可以被多个请求共用(重用可以提高性能) /// public bool IsReusable { get { return true; } }}
"ASP.NET验证码有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
验证
图片
生成
效果
用户
页面
代码
内容
噪音
字符
控件
更多
知识
网站
背景
长度
存储
学习
输出
不同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广西鸿雪互联网科技有限公司
数据库冷热分离查询数据
供应商对于企业网络安全影响
网络安全管理 推荐书
提示服务器连接不上
如何禁止服务器弹出服务管理器
手机服务器安全吗
网络安全创新发展联盟
戴尔服务器硬盘查看生产日期
魔兽阿纳克洛斯服务器
chrome的代理服务器
微信小程序如何操作数据库
安卓软件开发数据计算
传递网络安全知识作文
智能农业软件开发的主要问题
物理网络技术专业
银行学习网络安全简报
科技支撑互联网产业发展
杭州边峰网络技术
如何在服务器里卡掉基岩
战舰世界直营服怎么改服务器
网络技术挑战赛作品范例
潍坊电商软件开发解决方案
外国数据库搜索
mysql 锁数据库
高中网络技术应用试题操作题
网络安全教育竞赛奖项
浦东新区综合软件开发好处
山西软件开发五星服务
网络安全弊大于利四辩