zoukankan      html  css  js  c++  java
  • C#之asp.net 及MVC 生成动态验证码:

    C#之asp.net 及MVC 生成动态验证码:

    1.生成验证码字符串

    复制代码
    // 随机生成指定长度的验证码字符串
    private
    string RandomCode(int length) { string s = "0123456789zxcvbnmasdfghjklqwertyuiop"; StringBuilder sb = new StringBuilder(); Random rand = new Random(); int index; for(int i = 0; i < length; i++) { index = rand.Next(0, s.Length); sb.Append(s[index]); } return sb.ToString(); }
    复制代码

     2.绘制干扰线

    复制代码
    private void PaintInterLine(Graphics g,int num,int width,int height)
    {
        Random r = new Random();
        int startX, startY, endX, endY;
        for(int i = 0; i < num; i++)
        {
            startX = r.Next(0, width);
            startY = r.Next(0, height);
            endX = r.Next(0, width);
            endY = r.Next(0, height);
            g.DrawLine(new Pen(Brushes.Red), startX, startY, endX, endY);
        }
    }
    复制代码

    3.生成验证码

    复制代码
    public ActionResult GetValidateCode()
    {
        byte[] data = null;
        string code = RandomCode(5);
        TempData["code"] = code;
        //定义一个画板
        MemoryStream ms = new MemoryStream();
        using(Bitmap map=new Bitmap(100, 40))
        {
            //画笔,在指定画板画板上画图
            //g.Dispose();
            using (Graphics g = Graphics.FromImage(map))
            {
                g.Clear(Color.White);
                g.DrawString(code,new Font("黑体",18.0F),Brushes.Blue,new Point(10,8));
                //绘制干扰线
                PaintInterLine(g, 30, map.Width, map.Height);
            }
            map.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        data = ms.GetBuffer();
        return File(data, "image/jpeg");
    }
    复制代码

    4.前段获取验证码

    复制代码
    <form method="post" id="form1" action="/ValidateCode/login">
        <div class="code">
            <input type="text" name="code" />
            <img id="code" src="/ValidateCode/GetValidateCode/" />
            <a style="text-decoration:none; cursor:pointer" id="chCode">看不清?换一个</a>
        </div>
        <div >
            <input type="submit"  value="登录" />
        </div>
    </form>
    复制代码

     5.后台验证

    复制代码
    public ActionResult Login()
    {
        string code = Request.Form["code"].ToString();
        if (string.IsNullOrEmpty(code))
        {
            return Content("验证输不能为空");
        }
        if (!code.Equals(TempData["code"]))
        {
            return Content("验证输不正确");
        }
        return Content("验证输入正确");
    }
    复制代码
     
  • 相关阅读:
    国内最火的3款前端开发框架
    Cordova是做什么的
    老师你好。使用cordova生成的hellowold 的安卓5.0版本太高。怎么才可以生成4.4的呢?
    一个类似bootstrap的foundation
    role在标签中的作用是什么?
    如何做到根据不同的进度用不同的颜色显示整个进度条
    wall 和panel有啥区别
    git ignore
    eclipse js 引用跳转
    计划
  • 原文地址:https://www.cnblogs.com/mslalan/p/7843446.html
Copyright © 2011-2022 走看看