NULL

快乐的活着...【My open asp.net control projects http://www.codeplex.com/aspnetControl/】

  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理 ::
  36 随笔 :: 1 文章 :: 1088 评论 :: 42 Trackbacks
主题 
雕虫小技--自定义“验证码”控件


    “验证码”在登录的时候,经常用到,如果把“她”封装成控件,是不是很爽呢?
但是,我一般不喜欢封装得太厉害的“她”,因为什么都看不到,亦或看起来比较朦胧:)

切入点
利用IHttpHandler接口,动态生成验证码

图一(直接看效果吧)

看代码吧

步骤一(新建一类库)

Code


步骤二(使用方法)
直接引用编译后的dll文件
在web.config的web节点,加入<httpHandlers>元素,
例如

Code

当然,如果直接把类库作为一个普通类,放在使用的Website的App_Data目录的话,就不需要配置了:)

步骤三(使用方法)
在需要使用验证码的页面,扔一个image标记,然后把他的url指向"类名.aspx"
例如
Code

到此配置完成,是不是很简单呢:)
哎...
还是把最后一个步骤代码贴出来吧.
Code

需要注意的几个地方:)
一,记得要实现IRequiresSessionState接口,虽然她只是一个标记,没有她,Session状态无法使用.
二,HttpSessionState的对象是通过上下文获得的.
三,配制config的时候,不要忘记path="CValidater.aspx",如果path="*.aspx",那你所有的页面都将被CValidater处理,这不是我们所要的.

最后
什么也不说了,如果觉得对您有用,请给点鼓励...

posted on 2008-04-17 19:41 王孟军! 阅读(4344) 评论(106)  编辑 收藏 所属分类: asp.net Controls

评论

很实用!
  回复  引用    

#2楼  2008-04-17 19:49 Justin      

  回复  引用  查看    

#3楼  2008-04-17 19:51 Betree Xing      
大哥, 你长得很个性!
  回复  引用  查看    

#4楼 [楼主] 2008-04-17 20:00 王孟军!      
@Betree Xing
声明
请不要评论我的长相,或者我的光头...
:)
  回复  引用  查看    

#5楼  2008-04-17 20:06 Betree Xing      
:)
  回复  引用  查看    

#6楼  2008-04-17 20:07 Q.Lee.lulu      
没办法,一进来就先看到你的光头了,呵呵
  回复  引用  查看    

#7楼 [楼主] 2008-04-17 20:12 王孟军!      
@Q.Lee.lulu

某人云:
技术员,绝不出卖尊严,只出卖技术
还要加上一句
绝不出卖色相

  回复  引用  查看    

#8楼  2008-04-17 20:12 kabal      
不错!
PS:我也被光头先吸引过去了....
  回复  引用  查看    

#9楼  2008-04-17 20:12 gegewilliam      
很好!
  回复  引用  查看    

#10楼  2008-04-17 20:13 PPC [未注册用户]
注册用户或发帖回帖的时候用“验证码”,我知道是为了防止机器人程序自动批量注册或回复。

为什么在登录的时候也要用“验证码”?用“验证码”能提高登录时的安全性吗?
  回复  引用    

#11楼  2008-04-17 20:16 笑疯^_^      
呵呵,说真的,你长得像一个明星
  回复  引用  查看    

#12楼  2008-04-17 20:22 怪怪      
我每次进来, 都看见你深情的望着我..
  回复  引用  查看    

#13楼 [楼主] 2008-04-17 20:23 王孟军!      
回复给 10楼的兄弟
我只能笑笑了
如果有个验证代码,别人就算能破解,难度也会加大

  回复  引用  查看    

#14楼  2008-04-17 20:31 生鱼片      
哈哈
  回复  引用  查看    

#15楼  2008-04-17 20:50 欧尔      
支持!
  回复  引用  查看    

#16楼 [楼主] 2008-04-17 20:55 王孟军!      
@欧尔
thanks
  回复  引用  查看    

#17楼  2008-04-17 21:20 Kymo [未注册用户]
@PPC
应该是为了防止暴力破解

  回复  引用    

#18楼  2008-04-17 21:26 Agan@CN      
学习啦
有没有练过铁头功!
  回复  引用  查看    

#19楼 [楼主] 2008-04-17 21:30 王孟军!      
@Agan@CN
再次声明

请不要讨论 "政治有关",或者,"长相",或者"光头"...等,关键字
:)
  回复  引用  查看    

#20楼  2008-04-17 21:38 古道轻风      
我以前做过这个 但是不是这样实现的
  回复  引用  查看    

#21楼  2008-04-17 21:58 海洋      
大哥~个性
  回复  引用  查看    

#22楼  2008-04-17 22:02 EdisonGG [未注册用户]
赞!~
  回复  引用    

#23楼  2008-04-17 22:07 游客 [未注册用户]
文章 酷!
发型 更酷!
(没有用大哥讨厌的字眼 o(∩_∩)o...)
  回复  引用    

我比较关注左边的光头,而好像对这码子不太感兴趣
  回复  引用  查看    

#25楼  2008-04-17 22:28 老刀把子      
很光头。
是不是楼下理的。
  回复  引用  查看    

#26楼  2008-04-17 22:28 游客 [未注册用户]
好可爱的发型,好可爱的光头呀,可以烙饼不?
  回复  引用    

#27楼  2008-04-17 22:31 天下叁      
东西有用,人也长的很实在。我很稀饭。
  回复  引用  查看    

#28楼 [楼主] 2008-04-17 22:31 王孟军!      
@游客
@老刀把子
@德仔--脚踏实地 用心努力

我什么都不说了...
有点窝火...
  回复  引用  查看    

#29楼  2008-04-17 22:38 good man      
CValidater.aspx 这是哪里来的啊,看了半天哟

很好,很有用哟
  回复  引用  查看    

#30楼 [楼主] 2008-04-17 22:41 王孟军!      
@good man

thanks
其实没有CValidater.aspx这个实体
而是通过 实现了IHttpHandler接口的
用于处理aspx类型的对象CValidater,自动生成的


  回复  引用  查看    

#31楼  2008-04-17 22:48 good man      
对把你的所有文件发出来下载吗?我看看
  回复  引用  查看    

#32楼 [楼主] 2008-04-17 22:51 王孟军!      
@good man
抱歉,我不会弄那个下载 的连接
其实所有的demo都贴出来了
如果 需要,发个eamil吧!

  回复  引用  查看    

#33楼  2008-04-17 23:07 liong      
多谢分享 :)
  回复  引用  查看    

#34楼  2008-04-17 23:08 good man      
gmawaje@sohu.com
谢谢老大了,我现在这写silverlight 的东西
等一会你来看看哟

支持我一下
  回复  引用  查看    

#35楼  2008-04-17 23:51 平静中的疯狂      

  回复  引用  查看    

#36楼  2008-04-18 00:12 观顾者 [未注册用户]
嗯`确实不错!
不过此对象继承自了IHttpHandler,当假如此系统也用到了其它的组件,它们也实现了IHttpHandler接口,试问,他们二者是否会有冲突呢`
<httpHandlers>
<add path="CValidater.aspx" verb="*" type="ControlValidater.CValidater" />
<add path="*.aspx" verb="*" type="OtherComponent.OtherControl" />
</httpHandlers>
  回复  引用    

#37楼  2008-04-18 01:39 镜涛      
呵呵,不错!“要实现IRequiresSessionState接口”实现了这个接口和直接在该控件中使用Session的效果应该一样把?
  回复  引用  查看    

#38楼  2008-04-18 04:54 TT.Net      
长得太有个性了
  回复  引用  查看    

鼓励一下!
  回复  引用    

#40楼  2008-04-18 08:25 生鱼片      
楼主大家都没别的意思
  回复  引用  查看    

#41楼  2008-04-18 08:27 航天奇侠      
好像某个明星.

  回复  引用  查看    

#42楼  2008-04-18 08:28 李战      
支持,强烈支持!鼓励,再接再厉!
  回复  引用  查看    

#43楼 [楼主] 2008-04-18 08:30 王孟军!      
@生鱼片
开玩笑...

@阿慧2008
@阿慧2008
@TT.Net
@李战
thanks

@镜涛
实现IRequiresSessionState接口,表示实现者要求使用HttpSessionState类型的状态

@观顾者

不会的
注意path的配置就行

  回复  引用  查看    

#44楼  2008-04-18 08:50 石牌村夫      
好东西,赞一个
  回复  引用  查看    

#45楼  2008-04-18 08:52 dongbin      
鼓励下
  回复  引用  查看    

#46楼  2008-04-18 09:00 关涛      
支持!我绝对支持!
  回复  引用  查看    

#47楼  2008-04-18 09:14 Csea Xia      
不讨论光头, 饿 。。。
很有个性。。嘿嘿
  回复  引用  查看    

#48楼  2008-04-18 09:17 留恋星空      
个性十足
  回复  引用  查看    

#49楼  2008-04-18 09:20 早班火车      
lz强悍~人更彪悍~
  回复  引用  查看    

#50楼  2008-04-18 09:25 yeyang      
我都是使用别人封装好了的一个类
把验证码做成一刚图片 用一个Session获取 我觉得这样蛮不错的啊?
楼主 不知道我这样的做法 跟你的比起来 哪个个好些?
能说说你的那个有什么优缺点没?
  回复  引用  查看    

#51楼  2008-04-18 09:42 airwolf2026      
支持一下光头,俺也一直想去理一个光头...但是就怕
  回复  引用  查看    

#52楼  2008-04-18 09:43 SOSOS's BLog      
楼主像香港某姓汤的明星........7 8十年代那个
  回复  引用  查看    

#53楼  2008-04-18 09:45 pwqzc [未注册用户]
很光头
而且很黄很暴力
俺也是湖南的
  回复  引用    

#54楼  2008-04-18 09:46 Annie      
System.Web.IHttpHandler.IsReusable


请问楼主能帮我解释一下这个接口吗?
  回复  引用  查看    

#55楼  2008-04-18 09:57 杨正祎(阿一)      
支持。
  回复  引用  查看    

支持楼主
  回复  引用    

#57楼  2008-04-18 09:59 2214 [未注册用户]
在服务器端判断是不是会增加流量啊?最好是能够在客户端验证
  回复  引用    

#58楼 <