ASP.NET生成图片验证码
今天开始做一个新项目,包含完整的注册登陆流程,在登陆时需要输入验证码防止暴力破解。
制作思路是这样的:
准备使用handler一般处理程序来写,先随机从0-9和A-Z里随机取4个数字,将内容保存在Session中供验证时使用。然后使用Bitmap和Graphics画图,最后以image/png类型输出流。
具体代码如下:
System.Random rand = new Random();
int len = 4; //rand.Next(4, 6);
char[] chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
System.Text.StringBuilder myStr = new System.Text.StringBuilder();
for (int iCount = 0; iCount < len; iCount++)
{
myStr.Append(chars[rand.Next(chars.Length)]);
}
string verificationCode = myStr.ToString();
context.Session["VerificationCode"] = verificationCode;
Size ImageSize = Size.Empty;
using (Bitmap bmp = new Bitmap(121, 40)) {
using (Graphics g = Graphics.FromImage(bmp)) {
SolidBrush brush = new SolidBrush(Color.FromArgb(79, 137, 205));
g.Clear(Color.FromArgb(197,227,240));
g.DrawString(verificationCode, new Font("MS Sans Serif", 26,FontStyle.Strikeout,GraphicsUnit.Pixel), brush, new PointF(18, 6));
}
using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) {
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
context.Response.ContentType = "image/png";
ms.WriteTo(context.Response.OutputStream);
}
}
当然在handler中想要使用session的话还需要实现IRequiresSessionState接口,否则是无法操作Session的。
本站验证码效果示例:
http://www.leavescn.com/handler/VerificationCode.ashx
源文件下载:
http://www.leavescn.com/Files/downloads/VerificationCode.rar
更新于:3个月前
相关文章
- ASP.NET如何将Views文件夹从项目分离
- ASP.NET MVC最常用的设计模式代码示例
- ASP.NET 中的 Session 丢失或无法保持状态
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何优化ASP.NET Core应用的性能?
- Blazor 与传统 ASP.NET MVC 的对比
- PluginCore 基于 ASP.NET Core 的轻量级插件框架
- ASP.NET Core 中常用的内置中间件
- .NET9在ASP.NET MVC有什么更新?
- ASP.NET MVC与Web Forms的区别
- ASP.NET Core使用partial标签报错
- Asp.Net Core进程内托管 和 进程外托管的区别
- ASP.NET Core实现多语言本地化Web应用程序
- asp.net母版页和内容页PageLoad顺序
- ASP.NET Core主机和应用启动流程
- ASP.NET MVC4/5实现asp-append-version为css/js带上版本号
- ASP.NET Core 使用Razor code blocks替代@helper
- ASP.NET MVC View视图 .cshtml文件中创建方法
- ASP.NET Core MVC/RazorPage使用Anti-Forgery Tokens进行XSRF/CSRF防护
- ASP.NET Core Blazor EditForm内置表单验证显示ValidationMessage