Asp.net 做登录验证码(MVC)

news/2024/12/16 18:15:22/
  public class ValidateCode{/// <summary>/// 创建随机数/// </summary>/// <param name="num"></param>/// <returns></returns>public string CreateRandom(int num){string str = "ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789";StringBuilder sb = new StringBuilder();for (int i = 0; i < num; i++){sb.Append(str[new Random(Guid.NewGuid().GetHashCode()).Next(0, str.Length - 1)]);}return sb.ToString();}/// <summary>/// 验证码图片 => byte[]/// </summary>/// <param name="verifyCode">验证码</param>/// <param name="width">宽</param>/// <param name="height">高</param>/// <param name="fontsize">字体大小</param>/// <returns></returns>public byte[] CreateByteByImgVerifyCode(string verifyCode, int width, int height, int fontsize){Font font = new Font("Arial", fontsize, (FontStyle.Bold | FontStyle.Italic));Brush brush;Bitmap bitmap = new Bitmap(width, height);Graphics g = Graphics.FromImage(bitmap);SizeF totalSizeF = g.MeasureString(verifyCode, font);SizeF curCharSizeF;PointF startPointF = new PointF(10, (height - totalSizeF.Height) / 2); //x=5开始int wx = ((width - 20) / verifyCode.Length); //间距Random random = new Random(); //随机数产生器g.Clear(Color.White); //清空图片背景色  for (int i = 0; i < verifyCode.Length; i++){brush = new LinearGradientBrush(new Point(0, 0), new Point(1, 1), Color.FromArgb(random.Next(255), random.Next(255), random.Next(255)), Color.FromArgb(random.Next(255), random.Next(255), random.Next(255)));g.DrawString(verifyCode[i].ToString(), font, brush, startPointF);curCharSizeF = g.MeasureString(verifyCode[i].ToString(), font);startPointF.X += wx;}//画图片的干扰线  for (int i = 0; i < 10; i++){int x1 = random.Next(bitmap.Width);int x2 = random.Next(bitmap.Width);int y1 = random.Next(bitmap.Height);int y2 = random.Next(bitmap.Height);g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}//画图片的前景干扰点  for (int i = 0; i < 100; i++){int x = random.Next(bitmap.Width);int y = random.Next(bitmap.Height);bitmap.SetPixel(x, y, Color.FromArgb(random.Next()));}g.DrawRectangle(new Pen(Color.Silver), 0, 0, bitmap.Width - 1, bitmap.Height - 1); //画图片的边框线  g.Dispose();//保存图片数据  MemoryStream stream = new MemoryStream();bitmap.Save(stream, ImageFormat.Jpeg);//输出图片流  return stream.ToArray();}}

然后做一个接口

 public ActionResult Captcha(){ValidateCode validateCode = new ValidateCode();string code = validateCode.CreateRandom(4);Session["code"] = code.ToLower();return File(validateCode.CreateByteByImgVerifyCode(code, 130, 48, 22), "image/jpg");}

然后前端调用:

  <div style="margin-left: 10px;"><img src="/@ViewContext.RouteData.DataTokens["area"]/login/Captcha" class="layadmin-user-login-codeimg" id="LAY-user-get-vercode"></div>

如果验证码不出来,可能是服务没有打开,需要打开这个服务

如果没有,请安装一下,这个自行找下


http://www.ppmy.cn/news/1555642.html

相关文章

详解人工智能机器学习常见算法中的决策树的原理及应用

目录 1. 决策树的基本概念 2. 决策树的原理 2.1 特征选择 2.2 树的生成 决策树生成的步骤 示例 决策树生成的挑战 2.3 剪枝 预剪枝 后剪枝 3. 决策树的核心 特征选择 剪枝 4. 决策树的具体实现 5. 决策树的应用 6. 决策树的优缺点 优点 缺点 7. 总结 1. 决策树的…

H3C路由器配置基于路由的IPsec VPN

我们前面介绍了华为路由器如何配置基于路由的IPsec VPN&#xff08;华为路由器配置基于路由的IPSec VPN&#xff09;&#xff0c;之前还介绍过Juniper防火墙如何配置基于路由的IPsec VPN&#xff08;配置Juniper虚墙vSRX基于路由的IPsec VPN&#xff08;CLI方式&#xff09;&am…

FFMPEG视频转图片

用FFMPEG视频转图片&#xff0c;并且for循环 import os import subprocess# 输入文件夹和输出文件夹路径 input_folder r"I:\xxx" output_base_folder r"D:\xxx\YOLO\data\video" output_subfolder_name "20240609"# 创建输出子文件夹 output…

怎样把音频中某个乐器分离?分离乐器音轨技术

在音乐的浩瀚宇宙中&#xff0c;每一种乐器都承载着独特的音色与情感&#xff0c;它们交织在一起&#xff0c;共同编织出动人的旋律。然而&#xff0c;有时候&#xff0c;我们可能希望从一首复杂的音乐作品中单独聆听某个乐器的演奏&#xff0c;以更深入地理解其旋律线条、和声…

【有啥问啥】大语言模型Prompt中的“System指令”:深入剖析与误区澄清

大语言模型Prompt中的“System指令”&#xff1a;深入剖析与误区澄清 引言 在与大语言模型&#xff08;LLM&#xff09;交互时&#xff0c;“prompt”&#xff08;提示符&#xff09;这一概念已不再陌生。Prompt是引导模型生成特定类型文本的关键输入&#xff0c;决定了模型的…

【LeetCode】2381、字母移位 II

【LeetCode】2381、字母移位 II 文章目录 一、数据结构-差分-一维差分1.1 数据结构-差分-一维差分 二、多语言解法 一、数据结构-差分-一维差分 1.1 数据结构-差分-一维差分 题目复述: 字符串s, 和shifts[]数组, 遍历每个shifts[i]来操作s, 操作如下: 每个shifts[i] 为 [star…

Undo 表空间和Redo 表空间

在数据库中&#xff0c;除了数据表空间、索引表空间分别用于存放表数据和索引文件之外&#xff0c;还有 Undo 表空间和Redo 表空间是两个用于支持事务处理和数据恢复的关键概念 1. Undo 表空间&#xff08;撤销表空间&#xff09;&#xff1a; 作用&#xff1a; 存储用于回滚事…

支持自定义离线地图地理区域,查询组件及数据源功能增强,DataEase开源BI工具v2.10.3 LTS发布

2024年12月9日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10.3 LTS版本。 这一版本的功能变动包括&#xff1a;数据源方面&#xff0c;API数据源和Excel数据源支持对字段类型和长度进行设置&#xff1b;图表方面&#xff0c;离线类地图支持自定义地理区域设置&#…