栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

动态验证码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态验证码

方法: 

///


        /// 获取一个由数字和26个小写字母组成的指定长度的随即字符串
        ///

        /// 指定长度
        ///
        public static string GetRandomNumAndLetters(int intLong)
        {
            string strResult = "";
            string[] array = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };

            Random r = new Random();

            for (int i = 0; i < intLong; i++)
            {
                strResult += array[r.Next(36)];
            }

            return strResult;
        }

        ///


        /// 生成网页验证码数据
        ///

        /// 验证码上显示的内容
        /// 宽度
        /// 高度
        ///
        public static byte[] CreateImage(string randomCode, int imgWdith = 70, int imgHeight = 28)
        {
            Bitmap map = new Bitmap(imgWdith, imgHeight);//创建图片背景  
            Graphics graph = Graphics.FromImage(map);
            graph.Clear(Color.AliceBlue);//清除画面,填充背景 
            Random rand = new Random();
            //背景噪点生成
            Brush blackPen = new SolidBrush(Color.LightGray);
            for (int i = 0; i < 50; i++)
            {
                int x = rand.Next(0, map.Width);
                int y = rand.Next(0, map.Height);
                graph.FillRectangle(blackPen, x, y, 2, 2);
            }
            var chars = randomCode.ToCharArray();
            Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
            string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
            float[] fontSize = { 10f, 12f, 14f, 16f };
            var offset = 5f;
            var sf = new StringFormat { LineAlignment = StringAlignment.Center };
            foreach (var t in chars)
            {
                var cindex = rand.Next(7);
                var findex = rand.Next(5);
                var f = new Font(font[findex], fontSize[rand.Next(0, 4)], FontStyle.Bold);
                Brush b = new SolidBrush(c[cindex]);
                var s = t.ToString();
                graph.DrawString(s, f, b, new RectangleF(offset, 0, map.Width, map.Height), sf);
                offset += graph.MeasureString(s, f).Width;

                b.Dispose();
                f.Dispose();
            }
            sf.Dispose();
            var ms = new MemoryStream();
            map.Save(ms, ImageFormat.Jpeg);
            var buffer = ms.ToArray();

            ms.Dispose();
            graph.Dispose();
            map.Dispose();

            return buffer;
        }

Html: 

验证码:
                        /Login/CheckCodeImage" id="checkCodeimgs" />

js刷新验证码:

 $("#checkCodeimgs").click(function () {
            var math = Math.ceil(Math.random() * 10000);
            $("#checkCodeimgs").attr("src", "/Login/CheckCodeImage/" + math)
        });

对应的方法:

 public ActionResult CheckCodeImage()
        {
            string randCode = StringHelper.GetRandomNumAndLetters(4);
            Session["randCode"] = randCode;
            byte[] img = StringHelper.CreateImage(randCode, 70, 28);
            return File(img, "image/jpeg");

        }

 获取 var checkCode = $("#checkCode").val();

 $.post("/Login/Index", { UserName: userName, UserPwd: userPwd, savePass: savePass, checkCode: checkCode}, function (ref) {
                if (ref.sessace)
                {
                    window.location.href = "/Home/Index";
                }
                else
                {
                    alert(ref.msg);
                    $("#checkCode").val("");
                    $("#changBtn").click();
                }
            },'json');

在 提交方法加public ActionResult Index(string userName ,string userPwd ,string savePass,string checkCode)
 里加判断:

string randCode = Session["randCode"].ToString();

if (checkCode == randCode)
                    {

 }
                    else
                    {
                        return Json(new { sessace = false, msg = "验证码输入不正确!" }, JsonRequestBehavior.AllowGet);
                    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318533.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号