验证码类在asp.net mvc中的使用
导读:收集整理的这篇文章主要介绍了验证码类在asp.net mvc中的使用,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了asp.net mvc验证码类使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下验证码...
收集整理的这篇文章主要介绍了验证码类在asp.net mvc中的使用,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要为大家详细介绍了asp.net mvc验证码类使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下验证码类
namespace QJW.VerifyCode{
//用法: //public FileContentResult CreateValidate() //{
// ValidateCode vCode = new ValidateCode();
// string code = vCode.CreateValidateCode(5);
// Session["ValidateCode"] = code;
// byte[] bytes = vCode.CreateValidateGraphic(code);
// return File(bytes, "image/JPEG");
//}
public class ValidateCode {
public ValidateCode() {
}
/// summary>
/// 验证码的最大长度 /// /summary>
public int MaxLength {
get {
return 10;
}
}
/// summary>
/// 验证码的最小长度 /// /summary>
public int MinLength {
get {
return 1;
}
}
/// summary>
/// 生成验证码 /// /summary>
/// param name="length">
指定验证码的长度/param>
/// returns>
/returns>
public string CreateValidateCode(int length) {
int[] randMembers = new int[length];
int[] validateNums = new int[length];
string validateNumberStr = "";
//生成起始序列值 int seekSeek = unchecked((int)DateTime.Now.Ticks);
Random seekRand = new Random(seekSeek);
int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
int[] seeks = new int[length];
for (int i = 0;
i length;
i++) {
beginSeek += 10000;
seeks[i] = beginSeek;
}
//生成随机数字 for (int i = 0;
i length;
i++) {
Random rand = new Random(seeks[i]);
int pownum = 1 * (int)Math.Pow(10, length);
randMembers[i] = rand.Next(pownum, Int32.MaxValue);
}
//抽取随机数字 for (int i = 0;
i length;
i++) {
string numStr = randMembers[i].ToString();
int nuMLength = numStr.Length;
Random rand = new Random();
int numPosITion = rand.Next(0, numLength - 1);
validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
}
//生成验证码 for (int i = 0;
i length;
i++) {
validateNumberStr += validateNums[i].ToString();
}
return validateNumberStr;
}
/// summary>
/// 创建验证码的图片 /// /summary>
/// param name="containsPage">
要输出到的page对象/param>
/// param name="validateNum">
验证码/param>
public byte[] CreateValidateGraphic(string validateCode) {
Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
Graphics g = Graphics.FromImage(image);
try {
//生成随机生成器 Random random = new Random();
//清空图片背景色 g.Clear(Color.White);
//画图片的干扰线 for (int i = 0;
i 25;
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", 12, (FontStyle.Bold | FontStyle.Italic));
Lineargradientbrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Darkred, 1.2f, true);
g.DrawString(validateCode, font, brush, 3, 2);
//画图片的前景干扰点 for (int i = 0;
i 100;
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), 0, 0, image.Width - 1, image.Height - 1);
//保存图片数据 MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
//输出图片流 return stream.ToArray();
}
finally {
g.Dispose();
image.Dispose();
}
}
/// summary>
/// 得到验证码图片的长度 /// /summary>
/// param name="validateNumLength">
验证码的长度/param>
/// returns>
/returns>
public static int GetImageWidth(int validateNumLength) {
return (int)(validateNumLength * 12.0);
}
/// summary>
/// 得到验证码的高度 /// /summary>
/// returns>
/returns>
public static double GetImageHeight() {
return 22.5;
}
}
}
使用方法
public FileContentResult CreateValidate() {
ValidateCode vCode = new ValidateCode();
string code = vCode.CreateValidateCode(5);
Session["ValidateCode"] = code;
byte[] bytes = vCode.CreateValidateGraphic(code);
return File(bytes, "image/JPEG");
}
HTML
a href="javascript:;
" onclick="reloadcode();
">
img id="safecode" src="/common/CreateValidate" alt="" />
/a>
视图JS
function reloadcode() {
VAR verify = document.getElementById('safecode');
verify.setattribute('src', '/common/CreateValidate?' + Math.random());
}
以上就是验证码类在asp.net mvc中的使用的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 验证码类在asp.net mvc中的使用
本文地址: https://pptw.com/jishu/592682.html
