MVC-简单验证码制作
1、制作验证码:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using Soft.Common; namespace Soft.Controller
{ ///<summary>
/// 生成验证码的类
///</summary>
public class ValidateCode
{
/// <summary>
/// 保存验证码的cookie名字
/// </summary>
public static string ValidateCodeCookieName
{
get
{
return "SoftValidateCode";
}
} /// <summary>
/// 生成验证码
/// </summary>
/// <returns></returns>
public static string CreateValidateCode()
{
string checkCode = String.Empty;
System.Random random = new Random();
for (int i = ; i < ; i++)
{
checkCode += random.Next(,).ToString();
}
SessionCookieHelper.SetCookie(ValidateCodeCookieName, checkCode);
return checkCode;
} ///<summary>
/// 创建验证码的图片
///</summary>
///<param name="containsPage">要输出到的page对象</param>
///<param name="validateNum">验证码</param>
public static byte[] CreateValidateGraphic(string validateCode)
{
Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), );
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的干扰线
for (int i = ; i < ; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new Font("Arial", , (FontStyle.Bold | FontStyle.Italic));
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(, , image.Width, image.Height),
Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(validateCode, font, brush, , );
//画图片的前景干扰点
for (int i = ; i < ; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), , , image.Width - , image.Height - );
//保存图片数据
MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
//输出图片流
return stream.ToArray();
}
finally
{
g.Dispose();
image.Dispose();
}
}
}
}
2、新建一个验证码控制器和视图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Soft.Controller; namespace SoftWeb.Controllers
{
public class ValiteController : Controller
{
//
// GET: /Valite/ public ActionResult Index()
{
return File(ValidateCode.CreateValidateGraphic(ValidateCode.CreateValidateCode()), @"image/jpeg");
} }
}
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
</div>
</body>
</html>
3、使用时:
<script type="text/javascript">
function refreshValidateCode(obj) {
$("#ValidateCode").val("");
obj.src = "/Controls/ValidateCode/Index?r=" + Math.random();
}
</script> <img src="/Controls/ValidateCode/Index" onclick="refreshValidateCode(this);" />
4、可以加remote验证:
public class CheckValidateCodeController : Controller
{
public JsonResult CheckValidateCode(string validateCode)
{
string cookie = SessionCookieHelper.GetCookieValue(ValidateCode.ValidateCodeCookieName);
if (validateCode != cookie) { return Json("验证码不正确", JsonRequestBehavior.AllowGet); }
else { return Json(true, JsonRequestBehavior.AllowGet); }
}
} [Display(Name = "验证码")]
[Required(ErrorMessage = "*")]
[StringLength(, MinimumLength = , ErrorMessage = "请输入{1}位的{0}")]
[Remote("CheckValidateCode", "CheckValidateCode", "Controls")]
[DataType(DataType.Text)]
public string ValidateCode { get; set; }
MVC-简单验证码制作的更多相关文章
- MVC中验证码
MVC中验证码的实现(经常用,记录备用) 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭 ...
- 【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾
在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态.我们现在在网络上发现很多博客网站.论坛网站.CMS内容管理系统等都有使用伪静态这一种情况,伪 ...
- MVC中验证码的实现(经常用,记录备用)
一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭建 二 正文 Ok,我们的验证码开始,这篇文章 ...
- webform 图片验证码制作
界面:1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.as ...
- 简单验证码识别(matlab)
简单验证码识别(matlab) 验证码识别, matlab 昨天晚上一个朋友给我发了一些验证码的图片,希望能有一个自动识别的程序. 1474529971027.jpg 我看了看这些样本,发现都是很规则 ...
- 用imagemagick和tesseract-ocr破解简单验证码
用imagemagick和tesseract-ocr破解简单验证码 Tesseract-ocr据说辨识程度是世界排名第三,可谓神器啊. 准备工作: 1.安装tesseract-ocr sudo apt ...
- php笔记之GD库图片创建/简单验证码
燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...
- MVC简单分页
对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...
- Spring mvc系列一之 Spring mvc简单配置
Spring mvc系列一之 Spring mvc简单配置-引用 Spring MVC做为SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块 ...
- Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门
一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...
随机推荐
- Apache Rewrite 服务器变量
Apache提供给rewirte模块的环境变量大概分成5个类型. 第一部分: HTTP headers 部分参数 参数名称: HTTP_USER_AGENT 样例参考值: Mozilla/5.0 (W ...
- 安装opencms时遇到问题及解决方法
1. MySQL system variable 'max_allowed_packet' http://blog.csdn.net/hqa_ii/article/details/6872367 安装 ...
- 如何使用MVP模式搭建我们的Android应用?
听到很多人在讨论MVVM,我自己早些时候也写过一篇介绍MVVM的文章(玩转Android之MVVM开发模式实战,炫酷的DataBinding!),实际上,在Android开发领域中,除了MVVM之外, ...
- touch——移动端
touch事件原生一定要用addEventListener来绑定 一.原生 touchstart:触摸开始时触发 touches:当前位于屏幕上所有手指的列表 event.touches.length ...
- 自定义EL函数:小写转大写
1,定义java静态方法,FunctionDemo,有小写转大写的功能 package com.itheima.domain; public class FunctionDemo { public s ...
- oracle随笔(转)
---------数学函数 1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual 2.取整(大)S:select ceiling(-1 ...
- Razor语法大全(转)
Razor语法大全 因为最近在看mvc的时候在学习Razor的发现了这个不错的博文,故转之. 本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078 ...
- ###学习《Effective C++》
开源中国. #@date: 2014-06-16 #@author: gerui #@email: forgerui@gmail.com 前几天买了好几本书,其中有一本是<Effective C ...
- ios7之后 根据UILabel的文字计算frame的方法
ios7 新出来的根据label的文字和字体大小来确定label的宽高. 官方的方法是: - (CGRect)boundingRectWithSize:(CGSize)size options:(NS ...
- ios专题 - objc runtime 动态增加属性
objective-c中,有类别可以在不修改源码的基础上增加方法:近排在看别人的开源代码时,发现还可以动态增加属性.而且是在运行时,太牛B了. 使用运行时库,必须要先引入 objc/runtime.h ...