先看这个demo的解决方案图

Entity是实体,里面有验证码的实体

        private string contentType = "image/pjpeg";private ImageFormat imageFormat = ImageFormat.Jpeg;public Bitmap Image{get;set;}public string ContentType{get { return contentType; }set { contentType = value; }}public ImageFormat ImageFormat{get { return imageFormat; }set { imageFormat = value; }}

Plugin是插件
这个验证码是插件机制实现的
接口文件为

    public interface IVerifyImage{VerifyImageInfo GenerateImage(string code, int width, int height, Color bgcolor, int textcolor);}

provider类是一个抽象工厂
代码为

        private static Hashtable _instance = new Hashtable();private static object lockHelper = new object();//通过接口和反射结合配置文件信息来做整站多验证码技术public static IVerifyImage GetInstance(string assemlyName){if (!_instance.Contains(assemlyName)){lock (lockHelper){if (!_instance.ContainsKey(assemlyName)){IVerifyImage p = null;try{p = (IVerifyImage)Activator.CreateInstance(Type.GetType(string.Format("Plugin.VerifyImage.{0}.VerifyImage,Plugin.VerifyImage.{0}", assemlyName), false, true));}catch{p = new Plugin.VerifyImage.JpegImage.VerifyImage();}_instance.Add(assemlyName, p);}}}return (IVerifyImage)_instance[assemlyName];}

验证码相关对象是通过发射机制创建的
具体路径信息写在配置文件中
这样可以设置多个验证码类

具体验证码相关代码请下载这个demo自己去研究

做一个页面,重写他的onInit事件,把验证码输出出来

        protected override void OnInit(EventArgs e){base.OnInit(e);string verifyAssembly = "JpegImage";//此处信息可从配置文件获得string bgColor = "";//Request.QueryString["bgcolor"].Trim();int fontColor = 1; //StrToInt(Request.QueryString["fontcolor"].Trim(), 1);string[] bgcolorArray = bgColor.Split(',');Color bg = Color.White;if (bgcolorArray.Length == 1 && bgColor != string.Empty){bg = ToColor(bgColor);}else if (bgcolorArray.Length == 3 && IsNumericArray(bgcolorArray)){bg = Color.FromArgb(StrToInt(bgcolorArray[0], 255), StrToInt(bgcolorArray[1], 255), StrToInt(bgcolorArray[2], 255));}VerifyImageInfo verifyimg = Plugin.VerifyImage.VerifyImageProvider.GetInstance(verifyAssembly).GenerateImage(CreateAuthStr(5, false), 120, 60, bg, fontColor);Bitmap image = verifyimg.Image;System.Web.HttpContext.Current.Response.ContentType = verifyimg.ContentType;//MemoryStream ms = new MemoryStream();image.Save(this.Response.OutputStream, verifyimg.ImageFormat);}

这里涉及到很多工具方法,请下载demo自己研究

调用验证码可以在页面写JS代码

<script type="text/javascript">document.getElementById('vcodeimg').src='/tools/VerifyImagePage.aspx?id=4&time=' + Math.random();
</script>

源代码下载
vertify.rar

转载于:https://www.cnblogs.com/liulun/archive/2009/06/08/1499048.html

大型网站中的验证码解决方案相关推荐

  1. 登陆网站中的验证码是起什么作用的

    登陆网站中的验证码是起什么作用的 登陆网站中的验证码是起什么作用的 例如:1\登陆"SOSO问问"时先填用户名,然后填密码,下边有四个英文或数字随机组成的,需要用户填入 2\登陆网 ...

  2. 如何在网站中添加验证码验证

    要在网站中添加验证码验证,可以按照以下步骤进行操作: 在HTML表单中添加验证码输入框.在表单中添加一个输入框,用于让用户输入验证码. 生成随机验证码并保存到会话中.在服务器端生成一个随机的验证码,并 ...

  3. Memcached在大型网站中应用

    memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.最初为了加速 LiveJ ...

  4. Session的原理,大型网站中Session方面应注意什么?

    一.Session和Cookie的区别 Session是在服务器端保持会话数据的一种方法(通常用于pc端网站保持登录状态,手机端通常会使用token方式实现),存储在服务端. Cookie是在客户端保 ...

  5. Memcached在大型网站中应用[php 转载]

    memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.最初为了加速 LiveJ ...

  6. 大型网站技术架构核心原理剖析,文末附知识图谱下载

    什么是软件架构 维基百科定义:软件架构是指有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计. 软件架构5大要素: 性能 可用性 伸缩性 扩展性 安全性 可以通过考察这5大要素来衡量 ...

  7. 【面试精选】关于大型网站系统架构你不得不懂的10个问题

    该文已加入笔主的开源项目--JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目),地址:github.com/Snailclimb/- .觉得不错的话,记得点个Star. ...

  8. 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

    来源:http://www.cnblogs.com/edisonchou/p/3862389.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  9. 亿级流量网站架构核心技术_关于大型网站系统架构你不得不懂的10个问题

    来自:JavaGuide(微信号:JavaGuide) 下面这些问题都是一线大厂的真实面试问题,不论是对你面试还是说拓宽知识面应该都很有帮助.之前发过一篇8 张图读懂大型网站技术架构 可以作为不太了解 ...

最新文章

  1. 【webrtc】webrtc的rtp重传代码分析
  2. iText in Action 2nd5.4节(Adding page events to PdfWriter)读书笔记
  3. a标签居中 img vue,让html img图片垂直居中的三种方法
  4. elasticsearch中集群选举中的ping源码解析
  5. 管理大型共享数据库,做到这几点不再头疼!
  6. 抓取Crash不让崩溃
  7. 剑指offer python版 构建乘积数组
  8. FastJSON 简介及其Map/JSON/String 互转
  9. 230.二叉搜索树中第K小的元素
  10. 三菱5uplc伺服电机指令_?2020/9/12三菱PLC触摸屏控制POWSD-伺服电机
  11. Django @csrf_exempt不能在类视图中工作(Django @csrf_exempt not working in class View)
  12. 仿小米商城SpringBoot+Vue全栈项目开发实战文档
  13. Jmeter01 -mac下的安装
  14. VirtualBox 调整屏幕分辨率
  15. android2.1操作系统,电脑安卓操作系统
  16. Unity3D教程:简单触发器实现自动开关门
  17. 转 -- windows7 C盘空间越来越少?完美解决方案
  18. 什么是Timestamp——时间戳?
  19. 自然语言处理从零到入门 自然语言生成NLG
  20. 海信电视升级鸿蒙系统,海信电视陆续启动聚好看升级计划

热门文章

  1. php 去除 html 属性,用PHP 去掉所有html标签里的部分属性
  2. LeetCode 3:无重复字符的最长子串 思考分析
  3. 图像分割——基于二维灰度直方图的阈值处理
  4. 软件故障_一些主要的软件故障
  5. Java——集合(HashMap与Hashtable的区别)
  6. 输入一字符串,统计其中有多少个单词(单词之间用空格分隔)(java)
  7. centos7 docker删除端口映射_容器Docker详解
  8. 程序猿不能错过的十部电影
  9. Redis运维和开发学习目录
  10. Eclipse : Unresolved inclusion