HTTP模块(1)

HTTP模块是一个在每次针对应用程序发出请求时调用的程序集。

 

HTTP模块的典型用法:

(1)安全性 因为您可以检查传入的请求,所以HTTP模块可以在请求页,XML Web Services或调用处理程序之前执行自定义的身份验证或其他安全检查。

(2)统计信息和日志记录。因为HTTP模块是在每次请求时调用,所以,您可以将请求统计信息和日志记录信息收集到一个集中的模块中,而不是收集到各页中。

(3)自定义页眉页脚。因为你可以修改出站响应,所以可以在每一个页面或XML Web Services响应中注入内容,如自定义标头信息。

 

 

如何使用HTTP模块:

 

(1)写一个实现IHttpModule接口的模块,需要实现Init(HttpApplication context),Dispose()方法。

  (1-1)Init(HttpApplication context)方法

       该方法接受一个HttpApplication对象,代表了当前的应用程序。我们可以在这个方法中订阅HttpApplication对象的事件。

 

       过程可以理解如下:

             1.当站点的某个资源被第一次访问时,Asp.Net会创建HttpApplication类的实例,他代表着站点程序,同时还创建在Web.config中注册的HttpModule的实例。

             2.在创建HttpModule的实例时,将调用Init()方法。

             3.在Init方法内,订阅HttpApplication的各种事件

             4.HttpApplication在其生命周期中将触发这些事件,触发事件时将掉用我们订阅的事件处理方法。

  (1-2)Dispose()方法中销毁所占资源。

(2)在应用程序的Web.config文件中注册自定义模块。

     当ASP.Net创建表示您的应用程序的HttpApplication类的实例时,将创建已注册的任何模块的实例,当然也包括默认的模块。在创建模块时,将调用它的Init方法,并自行初始化。

     当然你也可以删除掉默认的处理HTTP模块。如Forms身份验证等。

 

如下:

<httpModules>
   <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="AuthenticationModule" type="JJSoft.Web.HttpModule.HttpModuleAuthentication"/>

    增加了一个自定义的身份认证模块。

   <remove name="WindowsAuthentication"/>

    删除了windows身份认证模块,如果你不删除该模块,将默认使用该模块进行身份认证。
</httpModules>

 

付:内置的 Http Module

    <httpModules>

       (1)页面级输出缓存
      <add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/>

       (2)Sessions状态管理
      <add name="Session" type="System.Web.SessionState.SessionStateModule"/>

       (3)用集成Windows身份验证进行客户端验证
      <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule"/>

       (4)用基于Cookie的窗体身份验证进行客户端验证
      <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/>

       (5)用MS护照进行客户端验证
      <add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule"/>

       (6)管理当前用户角色
      <add name="RoleManager" type="System.Web.Security.RoleManagerModule"/>

       (7)判断用户是否被授权访问某一URL
      <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/>

       (8)判断用户是否被授权访问某一文件
      <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule"/>

       (9)管理Asp.Net的匿名访问
      <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule"/>

       (10)管理用户档案文件的创立及事件
      <add name="Profile" type="System.Web.Profile.ProfileModule"/>

       (11)捕捉异常,格式化错误提示字符,传递给客户端程序
      <add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </httpModules>

 

ASP.Net在缺省配置文件中注册了这些HttpModule

 

ASP.NET会根据以下顺序来决定最终的配置情况:  
  1../Microsoft.NET/Framework/v.1.00/web.config(缺省配置文件)  
  2../webapp/web.config      (应用的配置)  
  3../webapp/owndir/web.config       (自己的配置) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值