MVC中的验证码
下面是一个完整的mvc controller类
public class CodeController : Controller
{
private const string CODE = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//验证码字符池
private const int COUNT = ;//验证码字符个数
private const int WIDTH = ;//图片宽
private const int HEIGHT = ;//图片高 // 产生验证码
private string GetCode()
{
Random r = new Random();
int length = CODE.Length;
StringBuilder sCode = new StringBuilder();
for (int i = ; i < COUNT; i++)
{
int index = r.Next(, length);
sCode.Append(CODE[index]);
}
return sCode.ToString();
} /// <summary>
/// 创建验证码图片
/// </summary>
/// <returns>图片文件</returns>
public ActionResult Code()
{
//画背景图
Bitmap bmp = new Bitmap(WIDTH, HEIGHT);//创建位图(宽,高)
Graphics g = Graphics.FromImage(bmp);//创建画布
g.FillRectangle(Brushes.LightGray, , , WIDTH, HEIGHT);//为画布填充底色(颜色,起始位置,终止位置) //画验证码
string code = this.GetCode();//取出验证码
this.Session.Add("code", code);//将当前验证码存入Session
Font f = new Font("微软雅黑", , FontStyle.Italic);//自定义文本格式(字体,字号,字形)
g.DrawString(code, f, Brushes.Black, , );//在画布上写入文本(内容,格式,颜色,起始位置) //画干扰点或线
Random r = new Random();
for (int i = ; i < ; i++)
{
Color color = Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, ));//随机颜色
Pen pen = new Pen(color);//创建线笔(颜色) int x = r.Next(, WIDTH);
int y = r.Next(, HEIGHT);
int xDir = r.Next();
int yDir = r.Next();
g.DrawLine(pen, x, y, x + xDir, y + yDir);//在画布上画短线(线笔,起始位置,终止位置)
}
ReturnResult result = new ReturnResult() { Result=true};
//向客户端输出
using (MemoryStream mStream = new MemoryStream())//创建内存流对象
{
bmp.Save(mStream, ImageFormat.Jpeg);//保存位图至内存流(内存流,格式)
byte[] data = mStream.ToArray();//将内存流转换成字节数组
return this.File(data, "application/image");//向客户端输出文件(输出内容,内容类型)
}
} }
前台中使用
<div class="Mask_div1 clearfix">
<p class="Mask_p1 fl">验证码:</p>
<input type="text" class="Mask_text1 fl" id="codetxt" />
<img src="/code/code" id="code" class="Mask_ing fl" />
<a href="javascript:void(0)" id="change" class="Mask_a1 fl">【刷新】</a>
</div> <script>
$(function(){
$("#change").click(function () {
var url = "/code/code?t=" + Date();
$("#code").attr("src", url);
}); })
</script>
MVC中的验证码的更多相关文章
- MVC中验证码
MVC中验证码的实现(经常用,记录备用) 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭 ...
- Spring mvc 中使用 kaptcha 验证码
生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目.使用Kaptcha 生成验证码十分简单并且参数可以进行自定义.只需添加jar包配置下就可 ...
- Spring MVC 中使用 Google kaptcha 验证码
验证码是抵抗批量操作和恶意登录最有效的方式之一. 验证码从产生到现在已经衍生出了很多分支.方式.google kaptcha 是一个非常实用的验证码生成类库. 通过灵活的配置生成各种样式的验证码,并将 ...
- MVC中验证码的实现(经常用,记录备用)
一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭建 二 正文 Ok,我们的验证码开始,这篇文章 ...
- MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法
前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...
- 基于spring mvc的图片验证码实现
本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...
- MVC之图片验证码
MVC之图片验证码 controller中的action方法public ActionResult GetValidateCode() { ValidateCode vCode = new Valid ...
- ASP.NET MVC实现网站验证码功能
网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中. 在 ...
- asp.net mvc 短信验证码
把发短信功能写成一个类包,需要引用: SmsUtillity.cs: using System; using System.Collections.Generic; using System.Linq ...
随机推荐
- UC浏览器体验
1.用户界面: 有两个页面,一个展示网页应用-可添加自己喜欢的网页应用,另一个用来搜索,有推荐的常用的网址,有UC头条,页面下有设置,整体布局常规 2.短期刺激: 没有特别花哨的地方:个人感觉比较实用 ...
- zancun
#include<iostream> #include<cstdio> using namespace std; ; int n; int avai[maxn], need[m ...
- 关于cuda拷贝的速度测试
由于没有使用profiler,仅仅通过简单的传输函数测试,如下测试了10000个点,1000000个点,100000000个点的速度: 均按时钟周期来计时,通过MAX调整数据 int main(){ ...
- [C/C++语言标准] ISO C99/ ISO C11/ ISO C++11/ ISO C++14/ISO C++17 Downloads
语言法典,C/C++社区人手一份,技术讨(hu)论(peng)必备 ISO IEC C99 https://files.cnblogs.com/files/racaljk/ISO_C99.pdf IS ...
- getTasksWithCompletionHandler的用法
最近在学习iOS的NSSession的后台下载,使用getTasksWithCompletionHandler获取下载任务时候,发现一些问题,希望分享一下: 第一次写博客有点乱,大家不要见怪-- NS ...
- Flume启动时报错Caused by: java.lang.InterruptedException: Timed out before HDFS call was made. Your hdfs.callTimeout might be set too low or HDFS calls are taking too long.解决办法(图文详解)
前期博客 Flume自定义拦截器(Interceptors)或自带拦截器时的一些经验技巧总结(图文详解) 问题详情 -- ::, (agent-shutdown-hook) [INFO - org.a ...
- zabbix告警
邮件告警分为两大步: 第一步:配置(配置又分为三小步) 发送邮件的用户 创建用户(添加上告警媒介) 给用户添加权限(在所有组里添加) 最后显示有读写权限才算成功!!! 告警媒介类型 创建媒介类型!一般 ...
- vue.js路由学习笔记二
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 20. js继承的6种方式
想要继承,就必须要提供个父类(继承谁,提供继承的属性) 一.原型链继承 重点:让新实例的原型等于父类的实例. 特点: 1.实例可继承的属性有:实例的构造函数的属性,父类构造函数属性,父类原型的属性.( ...
- LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版
前言: 前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡 ...