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 = ; i < length; i++)
{
index = rand.Next(, 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 = ; i < num; i++)
{
startX = r.Next(, width);
startY = r.Next(, height);
endX = r.Next(, width);
endY = r.Next(, height);
g.DrawLine(new Pen(Brushes.Red), startX, startY, endX, endY);
}
}

3.生成验证码

public ActionResult GetValidateCode()
{
byte[] data = null;
string code = RandomCode();
TempData["code"] = code;
//定义一个画板
MemoryStream ms = new MemoryStream();
using(Bitmap map=new Bitmap(, ))
{
//画笔,在指定画板画板上画图
//g.Dispose();
using (Graphics g = Graphics.FromImage(map))
{
g.Clear(Color.White);
g.DrawString(code,new Font("黑体",18.0F),Brushes.Blue,new Point(,));
//绘制干扰线
PaintInterLine(g, , 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("验证输入正确");
}
 

C#之asp.net 及MVC 生成动态验证码:的更多相关文章

  1. .NET中生成动态验证码

    .NET中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到 ...

  2. php生成动态验证码

    <?php/*调用示例*/session_start();$checkCode='';$chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ ...

  3. php生成动态验证码 加减算法验证码 简单验证码

    预览效果: <?php /** *ImageCode 生成包含验证码的GIF图片的函数 *@param $string 字符串 *@param $width 宽度 *@param $height ...

  4. ASP.Net MVC 生成安全验证码

    ---------html <td>验证码:</td>            <td>                <img src="/Logi ...

  5. ASP.NET MVC生成安全验证码

    html部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. MVC 生成安全验证码(例:用于登陆验证)(转)

    ---------html <td>验证码:</td> <td> <img src="/Login/CheckCode?ID=1" id= ...

  7. spring mvc生成注册验证码

    通过Spring MVC为系统添加验证码 1:布局登陆页面,用户名,密码,填写验证码的文本框,及验证码的图片及点击换图 <%@ taglib prefix="c" uri=& ...

  8. ASP.NET中如何生成图形验证码

    通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3 ...

  9. java生成动态验证码

    import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;impor ...

随机推荐

  1. discuz回贴通知插件实现-页面嵌入点(钩子)

    1.如何保证主题被回复时业务代码被执行. 2.获得主题,主题发布者,贴子等信息. 3.discuz发送email邮件.   discuz使用嵌入点(钩子)来处理代码的执行时机. 当用户开启插件开发者模 ...

  2. PAT 1062 最简分数(20)(代码+思路)

    1062 最简分数(20 分) 一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N​1​​/M​1​​ 和 N ...

  3. 模板练习(LUOGU)

    1:并查集 P3183食物链 #define man 300050 ; int find(int x){ if(fa[x]==x) return fa[x]; return fa[x]=find(fa ...

  4. [SoapUI] 将科学计数法转化为普通数字,并且只保留小数点后几位

    方案一: import java.text.NumberFormat class CompareHashMap { def regEx_Numeric = '-?[1-9]\\d*$|-?([1-9] ...

  5. 8个设计师必看的免费UI图标设计资源站

    图标是我们日常APP及网页设计过程中必不可少的元素之一,通过小小的图标,可以快速方便的实现视觉引导和功能划分.在创作时,我们需要寻找各种各样的图标来满足自己的设计需求,非常浪费时间和精力.今天,小编给 ...

  6. KBMMW 4.82.00 发布

    作者最近加紧了更新进度,赞一个. 时间都去哪儿了? 还没好好看4.81, 新版就来了. 这个版本主要是增强日志管理,已经强大到替换delphi 本身的异常处理了. We are happy to an ...

  7. 2018.09.29 bzoj3675: [Apio2014]序列分割(斜率优化dp)

    传送门 斜率优化dp经典题目. 首先需要证明只要选择的K个断点是相同的,那么得到的答案也是相同的. 根据分治的思想,我们只需要证明有两个断点时成立,就能推出K个断点时成立. 我们设两个断点分成的三段连 ...

  8. 2018.09.24 bzoj1867: [Noi1999]钉子和小球(概率dp)

    传送门 概率dp经典题. 如果当前位置(i,j)(i,j)(i,j)有钉子,那么掉到(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)的概率都是1/ ...

  9. 2018.07.03 POJ 3348 Cows(凸包)

    Cows Time Limit: 2000MS Memory Limit: 65536K Description Your friend to the south is interested in b ...

  10. DIV+CSS实战(二)

    一.说明 在DIV+CSS实战(一)中,已经把框架搭建起来了,现在就需要往框架里面添加内容了.需要实现的内容如下图: 二.头部的设计(全媒体订阅) 左侧是一张图片+标题 ,右侧是登录名 和上次登录的时 ...