.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">指定验证码的长 ...
随机推荐
- LockSupport学习
LockSupport工具类定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能.Java锁和同步器框架的核心工具类AQS:AbstractQueueSynchronizer,就是通过调 ...
- 深入解析当下大热的前后端分离组件django-rest_framework系列二
视图三部曲 一部曲 · 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framework.resp ...
- 解决错误:此用户名包含无效字符,请输入有效的用户名。wordpress不能注册中文用户名的问题
wordpress在默认情况下不支持中文用户名,就是在后台添加用户的时候,如果用户名包含中文,则显示”错误:此用户名包含无效字符,请输入有效的用户名.”如何解决这个问题呢? 不用插件的话就需要修改一个 ...
- nginx 开启 gzip
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_types text/plain applicatio ...
- Mybatis框架-2
1.Mybatis中的接口形式 在Mybatis中使用接口形式将通过代理对象调用方法,从而实现sql的执行 1)定义一个接口 package mapper; import java.util.List ...
- BZOJ2120/洛谷P1903 [国家集训队] 数颜色 [带修改莫队]
BZOJ传送门:洛谷传送门 数颜色 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R ...
- 【BZOJ 1004】 1004: [HNOI2008]Cards (置换、burnside引理)
1004: [HNOI2008]Cards Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很 ...
- 【SPOJ 8093】Sevenk Love Oimaster
http://www.spoj.com/problems/JZPGYZ/ 查询一个询问串在上面n个串中多少个串的子串. 后缀数组+主席树,常熟有点大... 建出广义SAM,利用parent树的dfs序 ...
- [Luogu1979][NOIP2013]华容道(BFS+SPFA)
考虑从起点到终点的过程,一定是先将空格子移到指定格子旁边,和指定格子交换,再移到下一个指定格子要到的地方,再交换,如此反复. 于是问题分为两个部分: 1.给定两个曼哈顿距离为2的格子求最短路,BFS即 ...
- 【树形dp】Distance in Tree
[CF161.D] Distance in Tree time limit per test 3 seconds memory limit per test 512 megabytes A tree ...