最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

asp.net mvc验证码类使用

来源:动视网 责编:小采 时间:2020-11-27 22:36:06
文档

asp.net mvc验证码类使用

asp.net mvc验证码类使用:验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // ValidateCode vCode = new ValidateCode(); // string code = vCode.CreateValidateCode(5)
推荐度:
导读asp.net mvc验证码类使用:验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // ValidateCode vCode = new ValidateCode(); // string code = vCode.CreateValidateCode(5)


验证码类

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="https://www.gxlcms.com/common/CreateValidate" " /></a> 
视图JS 

function reloadcode() {
 var verify = document.getElementById('safecode');
 verify.setAttribute('src', '/common/CreateValidate?' + Math.random());
 }

文档

asp.net mvc验证码类使用

asp.net mvc验证码类使用:验证码类 namespace QJW.VerifyCode { //用法: //public FileContentResult CreateValidate() //{ // ValidateCode vCode = new ValidateCode(); // string code = vCode.CreateValidateCode(5)
推荐度:
标签: 使用 验证码 mvc
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top