zoukankan      html  css  js  c++  java
  • 【转载】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(); 
                forint i = 0; 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(4); //生成验证码的四位随机码
            context.Session [“Code”] = code; 
            位图图像=新位图(120,40); 
            图形g = Graphics.FromImage(图像); 
            试试
            { 
                g.Clear(Color.White); 
                随机rand = new Random(); 
                forint i = 0; i <30; 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”,20,FontStyle.Italic); 
                LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0,0,Image.Width,Image.Height),Color.Blue,Color.DarkRed,5true); 
                g.DrawString(代码,字体,画笔,3,2); 
                g.DrawRectangle(new Pen(Color.Silver),0,0,Image.Width - 1,Image.Height - 1); 
                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,博主微信公众号如下:

  • 相关阅读:
    vue 监听变量或对象
    同行span标签设置display:inline-block;overflow:hidden垂直对齐问题
    vue style 的scoped 使用
    判断两个对象是否相等
    js call 和 apply方法记录
    接口联调遇到的坑 总结
    onclick或者其他事件在部分移动端无效的问题
    js 迭代方法
    原生js实现类的添加和删除,以及对数据的add和update、view ,ajax请求 ,页面离开的操作,获取url中参数等方法
    input 的radio checkbox 和 select 相关操作
  • 原文地址:https://www.cnblogs.com/xu-yi/p/11186526.html
Copyright © 2011-2022 走看看