龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.NET使用HttpModule实现IP地址屏蔽功能(源码)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
阅读前请先参阅《 细说Asp.net的IP地址屏蔽功能设计 》一文,本文将使用这篇文章中提出的思路,并将使用文中创建的数据库、实体类。 首先,新建一个类,名为IPFilter,继承自IHttpMo

阅读前请先参阅《细说Asp.net的IP地址屏蔽功能设计》一文,本文将使用这篇文章中提出的思路,并将使用文中创建的数据库、实体类。

 

首先,新建一个类,名为IPFilter,继承自IHttpModule接口:

image 

实现IHttpModule接口,并为context对象的AcquireRequestState事件添加事件处理:

image

(因为我们要用到Session,而在早于AcquireRequestState的事件中Session还未被初始化。参考于:http://www.cnblogs.com/junqilian/archive/2008/03/07/1095454.html

事件处理方法:

image

这里的主要功能是从Session中读取用户IP,再从缓存中读取IP地址屏蔽列表,遍历IP地址屏蔽数据,判断是否应当屏蔽当前IP,如果判断为屏蔽,就关闭输出,让客户端无法访问。

黄色高亮区域:这里是在判断Session是否为空,其原因是不能保证执行到这里时Session总是存在的,我曾在有异步访问的页面中遇到过这里报错的情况,所以这样处理比较稳妥。

绿色高亮区域:这是在《细说Asp.net的IP地址屏蔽功能设计》一文中提供的实体类方法。

蓝色高亮区域:辅助方法,其代码见下文:

image


精彩图集

赞助商链接