首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,577 阅读
2
Mac打印机设置黑白打印
4,888 阅读
3
修改elementUI中el-table树形结构图标
4,865 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,646 阅读
5
intelliJ Idea 2022.2.X破解
4,318 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Spring Cloud
Mac
MyBatis
WordPress
asp.net
Element UI
Nacos
MacOS
.Net
Spring Cloud Alibaba
Mybatis-Plus
Typecho
jQuery
MySQL
Java Script
微信小程序
Oracle
Laughing
累计撰写
606
篇文章
累计收到
1,417
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
1
篇与
的结果
2018-03-10
Asp.Net实现图形验证码
平时我们使用验证码的情形还是非常多的,比如登陆界面、发送短信验证码等,现在新的验证方式也又很多,比如数学计算或者滑块等,这里我们仅仅介绍传统的图形验证码。修改web.config,设置图形验证码的位数 <appSettings> <add key="VerifyCodeNum" value="4"/> </appSettings> 生成图片公共类using System; using System.Collections.Generic; using System.Configuration; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Web; /// <summary> /// VerifyCode 的摘要说明 /// </summary> public class VerifyCode { public VerifyCode() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 生成随机数 /// </summary> /// <returns></returns> public static string GetVerifyCode() { //获取系统配置的随机数的位数 int vCodeNum = Convert.ToInt32(ConfigurationManager.AppSettings["VerifyCodeNum"]); string vChar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p" + ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q" + ",R,S,T,U,V,W,X,Y,Z"; string[] vArray = vChar.Split(','); string code = "";//产生的随机数 int temp = -1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Random rand = new Random(); //采用一个简单的算法以保证生成随机数的不同 for (int i = 1; i < vCodeNum + 1; i++) { if (temp != -1) { rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));//初始化随机类 } int t = rand.Next(61);//获取随机数 if (temp != -1 && temp == t) { return GetVerifyCode();//如果获取的随机数重复,则递归调用 } ttemp = t;//把本次产生的随机数记录起来 code += vArray[t];//随机数的位数加一 } return code; } /// <summary> /// 该方法是将生成的随机数写入图像文件 /// </summary> /// <param name="code">code是一个随机数</param> public static MemoryStream CreateImage(out string code) { code = GetVerifyCode(); Bitmap Img = null; Graphics g = null; MemoryStream ms = null; Random random = new Random(); //验证码颜色集合 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; //验证码字体集合 string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; //定义图像的大小,生成图像的实例 Img = new Bitmap(((int)code.Length) * 16, 32); g = Graphics.FromImage(Img);//从Img对象生成新的Graphics对象 g.Clear(Color.White);//背景设为白色 //在随机位置画背景点 for (int i = 0; i < 100; i++) { int x = random.Next(Img.Width); int y = random.Next(Img.Height); g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); } //验证码绘制在g中 for (int i = 0; i < code.Length; i++) { int cindex = random.Next(7);//随机颜色索引值 int findex = random.Next(5);//随机字体索引值 Font f = new Font(fonts[findex], 15, FontStyle.Bold);//字体 Brush b = new SolidBrush(c[cindex]);//颜色 int ii = 4; if ((i + 1) % 2 == 0)//控制验证码不在同一高度 { ii = 2; } g.DrawString(code.Substring(i, 1), f, b, 3 + (i * 12), ii);//绘制一个验证字符 } ms = new MemoryStream();//生成内存流对象 Img.Save(ms, ImageFormat.Jpeg);//将此图像以Png图像文件的格式保存到流中 //回收资源 g.Dispose(); Img.Dispose(); return ms; } } 新建一个页面VerifyCodeImage.aspx共前台调用using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class VerifyCodeImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string verifyCode = String.Empty; MemoryStream memoryStream = VerifyCode.CreateImage(out verifyCode); Response.ContentType = "image/jpeg"; Response.Cookies.Add(new HttpCookie("VerifyCode", verifyCode)); Response.BinaryWrite(memoryStream.ToArray()); } }调用页面<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <asp:Content runat="server" ID="FeaturedContent" ContentPlaceHolderID="FeaturedContent"> <img src="/VerifyCodeImage.aspx" id="verifyCode"/> </asp:Content>实现验证实现验证也很简答,把验证码写入cookie,用户点击登陆的时候只需要与cookie的值进行比较即可。
2018年03月10日
1,080 阅读
0 评论
1 点赞