C#实现的ASP.NET全能型验证码控件(09.11.22) (10.01.27最新修改)

全能型ASP.NET验证码控件使用说明
(版本:2.0.0.0,最后更新:2010.01.26)
一.         简介
为了避免机器攻击,时下,很多网站在需要登录或注册的页面都增设了验证码。全能型ASP.NET验证码控件“SuperAuthenticationCode”经过历次更新,不断改进,现已推出2.0版,进一步方便了开发人员使用,效果更出色!(详见版本更新记录。)
本控件特色:
1.         多设置项精确定制验证码呈现:
SuperAuthenticationCode具有包括控件尺寸、验证超时时限、前景/背景色、字符集、字体集、噪化程度、动态化等在内的二十余个可设置项。通过这些选项,开发人员可以精确地定制想要的验证码的外观及特性。
2.         效果出色:
SuperAuthenticationCode支持点击更换;可以自定义的字符集包括“纯数字”、“纯字母”、“数字和字母组合”以及“简体汉字”,甚至还支持了“日语假名”;前景(验证码字符)的着色模式提供了“纯色填充”、“随机色填充”和“随机渐变色填充”三种方式;噪化程度提供了“高”、“中”、“低”和“无”四个级别;验证码图片的前景和背景还可分别设置成动态!(详见控件属性定制说明)
3.         使用简单而自由:
SuperAuthenticationCode使用简单,无需特殊配置(IIS 7.0下除外,详见本说明第二部分);控件内置了校验逻辑供开发人员调用(详见本说明第三部分);同时也开放接口,允许开发人员自定义校验方法。
二.         控件的安装及配置
下面以Microsoft Visual Studio 2008 Team System环境为例来说明本控件的安装。
1.      添加控件到Visual Studio工具箱
Visual Studio的控件工具箱中右键单击,在弹出的菜单中选择“选择项”(或者在“工具”菜单中选择“选择工具箱项”),将会弹出“选择工具箱项”窗口,如图2-1所示。
点击“浏览”按钮,选择控件文件“SuperAuthenticationCode.dll”,确定后就会看到工具箱内多了一个新的控件,如图2-2所示(注:控件图标可能与示例不同)。
 
2 ‑1安装自定义控件
 
2‑2添加好的AuthenticationCode控件
2.      添加“AuthCodeImage.aspx”页面(for特别版)
据用户反映,本控件在部分托管、租赁的虚拟服务器中无法正常使用,针对此问题,此次更新附加了一个“特别版”,安装使用此特别版时除了要将控件本身添加到工程中外,还需要将随包发行的“AuthCodeImage.aspx”页面文件一同添加到工程中(注:此页面文件添加进工程即可,无需做任何更改)。
3.      web.config文件中设置(for IIS 7.x
如果您使用SuperAuthenticationCode标准版并且您的网站运行于IIS 7.0(及更高)版本的服务器环境下,接下来需要在网站根目录下的web.config文件中做些设置。打开web.config文件,找到位于<system.webServer>节中的<handlers>小节,在其下添加如下内容即可:
<addname="AuthCodeImageHandler"path="AuthCodeImage.aspx"verb="*"type="SuperAuthenticationCode.ServerControl.AuthenticationCodeHandler" />
三.         控件属性定制
添加SuperAuthenticationCode控件到页面,在属性设计器中可以看到如图3-1所示的众多设置项(图示为控件缺省状态),下面逐一说明各设置项含义。
1)         WidthHeight控件宽度和高度,这个值不仅决定了控件的尺寸,也决定了验证码字符的大小。当控件高度大于宽度时,验证码字符将纵向排列。
2)         ExpireTime验证码的有效期,当超过这个时间后,即使用户的输入正确,也将无法通过验证(您亦可以自定义验证方法)。
3)         IsCaseSensive是否大小写敏感,这个设置将对验证方式产生影响,同样,如果自定义验证方法,此设置项无效。
4)         AllowCharRotation是否允许字符旋转,当此值为真时,产生的验证码字符会被做旋转形变。
5)         AllowDistortion是否允许扭曲字符,当此值为真时,产生的验证码字符会被做扭曲形变。
6)         BackColor控件背景色(注:可以设置为透明:“Transparent”,仅对非动态模式有效)。
7)         BorderColor控件边框色。
8)         BorderStyle控件边框样式,有直线、虚线等多种。
9)         BorderWidth边框宽度。
10)     CharNum字符数,即生成验证码的字符数量。
11)     CodeColorMode验证码字符颜色填充模式:
 PURE_COLOR”模式:使用纯色填充,选中此项时将使用ForeColor项中设置的颜色为所有验证码字符填充颜色;
RANDOM_COLOR”模式:使用随机色填充每个验证码字符;
GRADIENT_COLOR”模式:使用随机渐变色整体填充验证码。
12)     CodeFontMode验证码字符字体模式:
FONT_LIMITED”模式:验证码字符所使用的字体将从CodeFonts设置项所限定的字体集中随机选择,如果此项未设置,则使用系统默认字体;
FONT_FREE”模式:验证码字符所使用的字体将从系统内置的所有字体中随机选择(注:由于系统内置有图形符号字体,选择此项可能使生成的验证码图片包含不可辨认字符)。
13)     CodeFonts验证码字符字体集,限定生成验证码字符所使用的字体,注意此设置项只有在CodeFontMode项设置为“FONT_LIMITED”时才有效。 
  
3-1 控件属性设置
 
14)     CodeFontSizeMode验证码字符字号模式:
SIZE_FIXED”:固定字号模式,所有验证码字符均使用控件尺寸所允许的最大字号;
SIZE_VARY”:变化字号模式,每个验证码字符使用随机字号,最小字号为控件尺寸所允许的最大字号的3/5
15)     CodeOpacity验证码字符不透明度。
16)     ContentField验证码字符的字符集:
DIGIT_ONLY”:纯数字模式:生成的验证码字符仅包含数字;
LETTER_ONLY”:纯字母模式:生成的验证码字符仅包含英文字母(大小写均有);
DIGIT_AND_LETTER”:数字、字母混合模式:生成的验证码字符包含数字和字母(注:不包含数字“1”和字母“l”以及数字“0”和字母“O”等容易混淆的字符);
CN_CHAR_ONLY”:中文模式:生成的验证码字符仅包含简体中文汉字;
JP_CHAE_ONLY”:日文模式:生成的验证码字符仅包含日语假名(平假名和片假名均有)。
(注意:选择后两者,要求网站运行的服务器安装有GB2312字符集,Windows中文操作系统默认已安装。)
17)     ForeColor前景色,即验证码字符的颜色,此设置项仅在CodeColorMode项设置为“PURE_COLOR”时有效。
18)     IsBackgroundDynamic背景是否为动态,此项值为真时,生成的验证码图片背景是动态的。
19)     IsForegroundDynamic前景是否为动态,此项值为真时,生成的验证码图片前景(验证码字符)是动态的。
20)     NoiseMode验证码图片噪化程度设置:
HIGH_NOISY:高噪化度:生成的验证码图片包含前景线噪声、背景线噪声及背景点噪声;
MIDDLE_NOISY:中等噪化度:生成的验证码图片包含背景线噪声及背景点噪声;
LOW_NOISY:低噪化度:生成的验证码图片仅包含背景点噪声;
NONE:生成的验证码图片未经噪化处理。
(注:噪化图像是为了防止机器识别验证码。如果验证码控件尺寸比较小,过高的噪化度可能给用户识别也带来困难。)
21)     TooTip在页面中鼠标移过验证码图片时的提示信息,当获取验证码失败时也将显示此信息;
22)     LivePreview开启或关闭验证码图片设计时预览,由于验证码图片是实时生成的,这可能在一定程度上影响页面的设计时性能(特别是当验证码图片尺寸比较大时),通过此设置项您可以选择开启或关闭设计时预览支持:
ON:开启验证码图片设计时预览;
OFF:关闭验证码图片设计时预览。
 
以上为SuperAuthenticationCode控件提供的主要可设置属性,通过这些属性的调整,您可以自由而精确地定制验证码的外观和特性。
四.         验证码校验
以下说明如何校验用户的输入值。
1.      使用方法AuthenticationCodeValidate
该方法原型为:bool AuthenticationCodeValidate(string userInput),只要调用此方法并把用户的输入值传入即可,方法将返回布尔值通知校验是否通过。
2.      自定义校验方法
验证码的内容及生成时间存储在Session中,如果您需要自定义校验逻辑,可以通过如下方式获得:
HttpContext.Current.Session["AuthenticationCode"]获取验证码内容,类型为string;
HttpContext.Current.Session["AuthCodeGenerateTime"]获取验证码生成时间,类型为DateTime。
五.         版本更新记录
1.      版本2.0.0.0
发布时间:2010126
更新描述:
1)         增加了设计时实时预览支持(允许关闭);
2)         取消了控件尺寸设定的限制,允许验证码字符纵向排列;
3)         增加了验证码字符字体集的设置,允许指定字体集;
4)         增加了验证码字符字号模式设置;
5)         增加了“ToolTip”设置项,允许设定提示信息;
6)         推出了“特别版”,针对部分托管服务器无法正常获取验证码图片的问题提供了解决方案;
7)         简化了控件配置,IIS 7.0以下版本服务器无需任何特别设置即可使用;
8)         调整了控件属性在Visual Studio属性设计器中的布局;
9)         提高了动态验证码图片的生成速度;
10)     其他细节优化和bug修正。
2.      版本1.3.3.0
发布时间:20091210
更新描述:
1)         重新调整了色彩饱和度和亮度阈值
2)         增加了一个噪化级别
3)         修正了控件尺寸设定的一个bug
3.      版本1.3.0.0
发布时间:20091129
更新描述:
1)         修改了控件属性,免除了控件使用需要配置IIS的麻烦
2)         增加了控件属性,使生成验证码图片的前景及背景动态可分别控制。
4.      版本1.2.0.0
发布时间:20091127
更新描述:
1)         增加了验证码图片背景动态化支持;
2)         调整了低饱和度色彩阈值
5.      版本1.0.1.0
发布时间:20091125
更新描述:
1)         修正了控件尺寸设定限制存在的bug
6.      版本1.0.0.0
发布时间:20091122
更新描述:最初版本。
六.         其他说明
1.         本验证码控件的制作借鉴了网上一款名为“AuthCode”的控件,作者不详;
2.         图像扭曲变形算法参考了“ChineseVerifyCode”验证码的方式,作者18470590,下载地址http://www.51aspx.com/CV/ChineseVerifyCode/
3.         动态图像的编码使用了开源GIF编码器NGif,作者gOODiDEA.NET,下载地址http://www.codeproject.com/KB/GDI-plus/NGif.aspx
4.         特别感谢CSDN学生大本营的陈邦师兄,在他的指导下,此控件的安装使用减免了一大半繁琐的步骤,也使我个人学到了新知识;
5.         特别感谢用户王炼,对控件提出改进意见并提供了测试环境。
 
在此谨对以上组织或个人表示感谢!
 
效果示例:
 
本人联系方式:
QQ286603227
 
欢迎通过上述联系方式反馈意见。
 
原文地址:https://www.cnblogs.com/Leo_wl/p/1737458.html