.NET MVC 验证码
.NET MVC 验证码
效果差不多就这样,接下来直接上代码。
验证码生成器
- public class ValidateCode
- {
- public static ValidateCode Default = new ValidateCode();
- public int ImageWidth { get; set; }
- public int ImageHeight { get; set; }
- public string Letters { get; set; }
- public int CodeLength { get; set; }
- private Random r = new Random();
- public ValidateCode()
- {
- ImageWidth ;
- ImageHeight ;
- CodeLength ;
- Letters = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ1234567890";
- }
- public string GetValidationCode()
- {
- //合法随机显示字符列表
- System.Text.StringBuilder s = new System.Text.StringBuilder();
- //将随机生成的字符串绘制到图片上
- ; i < CodeLength; i++)
- {
- s));
- }
- return s.ToString();
- }
- public byte[] GetValidationImage(string codeString)
- {
- //设置输出流图片格式
- var b = new System.Drawing.Bitmap(ImageWidth, ImageHeight);
- var g = System.Drawing.Graphics.FromImage(b);
- );
- );
- );
- g);
- var font , System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);
- //合法随机显示字符列表
- //将随机生成的字符串绘制到图片上
- ; i < codeString.Length; i++)
- {
- );
- );
- );
- );
- );
- );
- g ));
- }
- //生成干扰线条
- var pen );
- ; i++)
- {
- g)));
- }
- var stream = new System.IO.MemoryStream();
- b.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
- g.Dispose();
- b.Dispose();
- //输出图片流
- return stream.ToArray();
- }
- }
使用方法
- public ActionResult validateCode() //创建一个action用于返回验证码图片
- {
- string validateCode = ValidateCode.Default.GetValidationCode(); //获取验证码
- Session["LoginValidateCode"] = validateCode; //将验证码保存到Session中
- return File(ValidateCode.Default.GetValidationImage(validateCode), @"image/jpeg"); //返回验证码图片
- }
- //直接将这个action 的地址赋值给img标签就可以了,例如 <img src="http://localhost:5695/home/validateCode" alt="">
- public ActionResult Login(string validateCode)
- {
- if (String.IsNullOrEmpty(Session["LoginValidateCode"].ToString()))
- {
- return Content("你登录页面停留的时间过久页已经超时");
- }
- else if (!Session["LoginValidateCode"].ToString().Equals(validateCode, StringComparison.CurrentCultureIgnoreCase))
- {
- return Content("验证码错误");
- }
- return RedirectToAction("Index"); //成功
- }
.NET MVC 验证码的更多相关文章
- MVC 验证码实现( 简易版)
现在网站上越来越多的验证码,使用场景也是越来越多,登陆.注册.上传.下载...等等地方,都有可能大量使用到验证码,那么制作验证码到底有多简单呢?我们一起来看下最简易版的验证码实现过程- 验证码的基本步 ...
- ASP.NET MVC验证码演示(Ver2)
前一版本<ASP.NET MVC验证码演示>http://www.cnblogs.com/insus/p/3622116.html,Insus.NET还是使用了Generic handle ...
- MVC验证码的编写
主要是相互学习一下mvc,希望各位大神指导 /// <summary> /// 生成随机数字 /// </summary> /// <returns>随机数字< ...
- ASP.NET MVC验证码演示
我们在网站登录或理一个评论时,可以放置一个验证码(Captcha),可以为系统免去那些恶意刷新等功能. 今次Insus.NET在asp.net mvc应用程序实现与演示验证码的产生以及应用等 . 前天 ...
- ASP.NET mvc 验证码 (转)
ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...
- mvc验证码图片生成
/// <summary> ///生成验证码 /// </summary> public class VerifyCode { /// <summary> /// ...
- asp.net mvc 验证码
效果图 验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // Validat ...
- 简单C#、asp.net mvc验证码的实现
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;u ...
- C# mvc 验证码3
//// <summary> /// 生成验证码 /// </summary> /// <param name="length">指定验证码的长 ...
随机推荐
- Grid++Report 注册
regsvr32 "D:\Grid++Report 5.0\gregn50.dll" regsvr32 "D:\Grid++Report 5.0\grdes50.dl ...
- Spring学习(二)——Spring中的AOP的初步理解
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...
- socket编程的网络协议
"我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容" TCP/IP只是一个协议栈,就像程序运行一样,必须要实现运行,同时还要 ...
- 洛谷 P2680 运输计划-二分+树上差分(边权覆盖)
P2680 运输计划 题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条 ...
- lamp字符编码的转换规则
1.lamp字符编码的转换规则 lamp(Linux+Apache+Mysql+PHP) 1.1GB 2312 GB 2312 或 GB 2312-80 是中国国家标准简体中文字符集,全称<信息 ...
- windows同时使用python2和3
前言 手头有些脚本,有些是在python2的环境下使用,有些是在python3的环境下使用 以前我是把python3的脚本都放在虚拟机中,现在发现是真的麻烦,于是来研究一下如何使得python2和3共 ...
- Linux操作命令(二)
本次实验将介绍 Linux 命令中 mkdir.rm.mv.cp.cat.nl 命令的用法. 1.mkdir mkdir命令用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的 ...
- hibernate自连接--典型的oracle自带emp实现
用S2SH三大框架整合,用了oracle自带的表emp,实现了自连接. pojo类: public class Emp implements java.io.Serializable { // Fie ...
- 如何将hdf5文件转换成tflite文件
我们用keras训练模型后,通常保存的模型格式类型为hdf5格式,也就是.h5文件. 但如果我们想要移植到移动端,特别是基于tensorflow支持的移动端,那就需要转换成tflite格式. 如何转换 ...
- Bzoj 1014&Luogu 4036 火星人Prefix(FHQ-Treap)
题面 洛谷 Bzoj 题解 首先,这种带修改的是不能用$SA$的,然后,我们做$SA$的题一般也能二分+$Hash$,所以不妨考虑用$FHQ-Treap$维护树,然后查询就用二分+$Hash$. $H ...