-
1 任务四 HttpM...
-
2 作业
HttpModule的使用
通过任务四学习,你需要掌握和了解以下内容:
1.了解HttpModule的概念
2.掌握使用HttpModule实现对请求的过滤
【任务要点】
1.HttpModule的概念
2.使用HttpModule实现对请求的过滤
【案例一】
使用HttpModule实现对整个站点的访问控制,也就是用户必须通过登录页面进入系统,防止用户直接输入URL地址访问系统页面。准备两个或两个以上的页面,在没有获得授权之前,在地址栏输入其他任何页面地址都会跳转到登录页面,省去了在ASP中每个页面都需要判断会话的麻烦。具体运行效果如下图所示。

如果登录成功,此时将在所有页面上显示欢迎语“欢迎您!xxxxxx!”,效果如下图所示。

【具体步骤】
(1)创建登录页面“Login.aspx”,主要包括用户名和密码两个文本框。

(2)创建默认主页面“Default.aspx”,页面中不添加任何内容,主要用来输出欢迎词。
(3)创建HttpModule处理程序“Validator”。启动VS,创建一个ASP.NET网站,选择【项目】→【添加新项】命令,在弹出的对话框中选择【类】选项,将类的名称修改为“Validator”,如下图所示。
单击【添加】按钮,在生成的类中,修改类代码,让其实现IHttpModule接口




(4)注册模块。在Web.Config中<system.web>节点之间添加代码。

【背景知识】
(1)HttpModule和HttpHandler程序运行模型。ASP.NET请求处理过程是基于管道模型的,在模型中ASP.NET把HTTP请求传递给管道中的所有模块。每个模块都接收HTTP请求并有完全的控制权限。模块可以用任何自认为适合的方式来处理请求。一旦请求经过了所有HTTP模块,就最终被HTTP处理程序处理。HTTP处理程序对请求进行一些处理,并且结果将再次经过管道中的HTTP模块。具体的运行模型如图1-4所示。
(2)HttpHandler处理程序:HttpHanlder处理程序是实现了System.Web.IHttpHandler接口的.NET组件。任何实现了IHttpHandler接口的类都可以用于处理输入的HTTP请求。HTTP处理程序与ISAPI扩展有些类似。HTTP处理程序和ISAPI扩展的差别在于在URL中可以使用HTTP处理程序的文件名称直接调用它们,与ISAPI扩展类似。
(3)HttpModule模块处理程序:HTTP模块是实现了System.Web.IhttpModule接口的.NET组件。这些组件通过在某些事件中注册自身,把自己插入ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。

