验证码图片生成和验证

开发工具与关键技术:VS    验证码
作者:听民谣的老猫
撰写时间:2019/6/7   13:10
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190609185843868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU0MDIzNg==,size_16,color_FFFFFF,t_70)   

一些网页或者app的登录都需要验证码的验证。
验证码图片生成

验证码图片生成和验证_第1张图片
上面返回的是图片的二进制数组。图片也是保存到MemoryStream中的。
(随机字符的生成在我2019-02-24的博客中有讲解)
然后到验证码页面对应的控制器写验证码的方法

1 生成长度为5的随机的验证码字符串
string strRandom = ValidCodeUtils.GetRandomCode(5);
2 根据生成的验证码字符串生成 验证码图片
byte[] byteImg = ValidCodeUtils.CreateImage(strRandom);
3 验证码字符串存入session中 key值为
(验证码验证是将你输入的验证码与Session中保存的验证码作比较)
Session[“validCode”] = strRandom;
4 把图片返回到视图
return File(byteImg, @“image/jpeg”)(图片类型);
(将上面的四个步骤,用方法封装好后在对应的img标签处将路径填写至这个方法,图片也就生成好了。)

验证码的验证

验证码的切换
验证码图片生成和验证_第2张图片
(因为浏览器的缓存机制,所以我们需要拼接毫秒的方式来生成新的路径。这样才能达到验证码的点击切换)

获取页面上的验证码输入值

var validCode = $(’#fmLogin [name=“validCode”]’).val();
验证码图片生成和验证_第3张图片
在页面控制器写验证码判断方法(方法名要和上面post路径上的方法名一致)

 public ActionResult UserLogin()
{ 
           1 定义一个记录状态的变量
            string strMsg = "fail";
           2  获取页面传递的验证码
string strValidCode = Request["validCode"];
3 获取session中的验证码  判断验证码   
string sessionValidCode = String.Empty;
捕获异常
try
            {
                sessionValidCode = Session["validCode"].ToString();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);无效果 只是避免e未使用的警告
                //throw;
   }
4 判断用户输入的验证码和session中拿到的验证码是否一致(忽略大小写)
if (sessionValidCode.Equals(strValidCode.Trim(), StringComparison.CurrentCultureIgnoreCase))
            {
                strMsg = "success";验证码正确
            }
            else
            {
                strMsg = "validCodeErro";验证码错误
            }
            return Json(strMsg, JsonRequestBehavior.AllowGet);
 }

演示
验证码错误

验证码图片生成和验证_第4张图片
验证码图片生成和验证_第5张图片

验证码正确
验证码图片生成和验证_第6张图片
验证码图片生成和验证_第7张图片

你可能感兴趣的:(验证码)