蝙蝠岛资源网 Design By www.hbtsch.com
                                日常生活中我们在使用网站时都会遇到验证码,大家有没有想过为什么要使用验证码?
其实验证码的作用就是防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。今天就跟大家分享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
<img src="/UploadFiles/2021-04-02/CheckCode.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; /// <summary> /// ValidateImageHandler 生成网站验证码功能 /// </summary> public class ValidateImageHandler : IHttpHandler, IRequiresSessionState { int intLength = 5; //长度 string strIdentify = "Identify"; //随机字串存储键值,以便存储到Session中 public ValidateImageHandler() { } /// <summary> /// 生成验证图片核心代码 /// </summary> /// <param name="hc"></param> 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(); } /// <summary> /// 表示此类实例是否可以被多个请求共用(重用可以提高性能) /// </summary> public bool IsReusable { get { return true; } } }以上就是ASP.NET3种验证码,各有各的优缺点,希望大家可以熟练实现不同验证码的功能。
                                    标签:
                                        
                                ASP.NET,验证码
蝙蝠岛资源网 Design By www.hbtsch.com
                            
                                广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
                        免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
                        暂无ASP.NET验证码(3种)的评论...
                                    稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2025年11月04日
                                2025年11月04日
                    - 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
 - 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
 - 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
 - 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
 - 群星《2024好听新歌42》AI调整音效【WAV分轨】
 - 王思雨-《思念陪着鸿雁飞》WAV
 - 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
 - 李健《无时无刻》[WAV+CUE][590M]
 - 陈奕迅《酝酿》[WAV分轨][502M]
 - 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
 - 群星《吉他王(黑胶CD)》[WAV+CUE]
 - 齐秦《穿乐(穿越)》[WAV+CUE]
 - 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
 - 邝美云《邝美云精装歌集》[DSF][1.6G]
 - 吕方《爱一回伤一回》[WAV+CUE][454M]
 
                        

