开发工具与关键技术: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的登录都需要验证码的验证。
验证码图片生成
上面返回的是图片的二进制数组。图片也是保存到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标签处将路径填写至这个方法,图片也就生成好了。)
验证码的验证
验证码的切换
(因为浏览器的缓存机制,所以我们需要拼接毫秒的方式来生成新的路径。这样才能达到验证码的点击切换)
获取页面上的验证码输入值
var validCode = $(’#fmLogin [name=“validCode”]’).val();
在页面控制器写验证码判断方法(方法名要和上面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);
}
演示
验证码错误
验证码正确