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
更新于:16天前
相关文章
- 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
- .NET Core记录请求处理时间的中间件
- ASP.NET设置允许上传文件大小
- VSCode开发ASP.NET网站
- 在VSCode中开发ASP.NET网站的示例
- ASP.NET Core策略授权和ABP授权
- 使用VSCode开发.NET MVC常用插件
- 本机AOT与ASP.NET Core配合使用的优势
- ASP.NET Core微服务架构中使用RabbitMQ实现CQRS模式
- VSCode搭建ASP.NET开发环境
- ASP.NET Core使用BuildBundlerMinifier捆绑压缩样式JS文件