• 常见的 HttpModule


    转载自:https://www.cnblogs.com/rash/archive/2013/05/23/3094305.html

    在 ASP.NET 中,已经预定义了许多HttpModule,甚至已经在服务器的网站配置文件中进行了注册,在系统文件夹 C:WindowsMicrosoft.NETFrameworkv4.0.30319Config 中,web.config 文件中已经注册了 14 个 HttpModule。

    1. <httpModules
    2.     <add name="OutputCache" 
    3.     type="System.Web.Caching.OutputCacheModule" /> 
    4.     <add name="Session" 
    5.     type="System.Web.SessionState.SessionStateModule" /> 
    6.     <add name="WindowsAuthentication" 
    7.     type="System.Web.Security.WindowsAuthenticationModule" /> 
    8.     <add name="FormsAuthentication" 
    9.     type="System.Web.Security.FormsAuthenticationModule" /> 
    10.     <add name="PassportAuthentication" 
    11.     type="System.Web.Security.PassportAuthenticationModule" /> 
    12.     <add name="RoleManager" 
    13.     type="System.Web.Security.RoleManagerModule" /> 
    14.     <add name="UrlAuthorization" 
    15.     type="System.Web.Security.UrlAuthorizationModule" /> 
    16.     <add name="FileAuthorization" 
    17.     type="System.Web.Security.FileAuthorizationModule" /> 
    18.     <add name="AnonymousIdentification" 
    19.     type="System.Web.Security.AnonymousIdentificationModule" /> 
    20.     <add name="Profile" 
    21.     type="System.Web.Profile.ProfileModule" /> 
    22.     <add name="ErrorHandlerModule" 
    23.     type="System.Web.Mobile.ErrorHandlerModule, 
      System.Web.Mobile, Version=4.0.0.0,  
    24.         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    25.     <add name="ServiceModel" 
    26.     type="System.ServiceModel.Activation.HttpModule, System.ServiceModel.  
    27.         Activation,Version=4.0.0.0, Culture=neutral,  
    28.         PublicKeyToken=31bf3856ad364e35" /> 
    29.     <add name="UrlRoutingModule-4.0" 
    30.     type="System.Web.Routing.UrlRoutingModule" /> 
    31.     <add name="ScriptModule-4.0" 
    32.     type="System.Web.Handlers.ScriptModule, System.Web.
      Extensions, Version=4.0.0.0,  
    33.         Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    34. </httpModules

    主要的HttpModule的解释如下:

    OutputCacheMudole 完成ASP.NET的输出缓存管理工作。

    OutputCacheMudole的配置参数通过system.web配置元素的caching子元素的 outputCache元素进行定义。当启用输出缓存之后,OutputCacheMudole 将注册 HttpApplication 的ResolveRequestCache 和 UpdateRequestCache 两个事件完成输出缓存的管理。

    SessionStateModule 完成 Session 的管理工作。

    这个 Module 的配置参数通过配置文件中的 system.web 配置元素的 sessionState 子元素进行配置。当启用 Session 状态管理之后,SessionStateModule 将注册 HttpApplication 的AcquireRequestState、ReleaseRequestState、EndRequest三个事件完成 Session 状态的管理工作。

    ProfileModule 在 .NET 2.0 之后,提供个性化数据管理。

    这是一个自定义的类似于 Session 的会话状态管理,但是,个性化数据的读取和保存可以由程序员完全控制,并且提供了强类型的数据访问方式。这个 Module 的配置参数在 system.web 的子元素 profile 中进行说明。当启用了个性化数据管理之后,Module 将注册 HttpApplicaiton 的 AcquireRequestState 和EndRequest 事件处理。

    AnonymousIdentificationModule 提供匿名用户的标识。

    是否启用匿名用户标识在配置文件的system.web配置元素的子元素 anonymousIdentification 中定义,还可以配置匿名标识的管理方式。由于在 AuthenticateRequest 事件中将验证用户,获取用户名,所以,这个 Module 注册了 PostAuthenticateRequest 的事件处理,当用户没有经过验证的时候,为用户分配一个唯一的匿名标识。

    WindowsAuthenticationModule、FormsAuthenticationModule和PassportAuthenticationModule用来完成用户的验证工作。

    它们通过配置文件中 system.web 的子元素 authentication 子元素定义,mode 属性用来指定网站当前使用的验证方式,也就是哪一个 Module 将被用来完成验证工作。在启用验证的情况下,FormsAuthenticationModule 和 PassportAuthenticationModule将注册 HttpApplication 的AuthenticateRequest 和 EndRequest 事件进行用户的验证处理。 WindowsAuthenticationModule 将注册 AuthenticateRequest 的事件处理。

    RoleManagerModule、UrlAuthorizationModule、FileAuthorizationModule 用来完成用户的授权管理。

    授权管理的配置参数来自 system.web 的 authorization 子元素。UrlAuthorizationModule 和 FileAuthorizationModule 注册了 HttpApplication 的 AuthorizeRequest 事件处理,用来检查 Url 和 文件的访问授权。RoleManagerModule 在 Url 和 文件访问授权检查通过之后,通过用户的标识和角色来完成用户的授权检查,RoleManagerModule 注册了 HttpApplication 的 PostAuthenticateRequest 和 EndRequest 事件处理。

    对一个网站来说,ASP.NET提供的有些HttpMoudle可能并不是需要的, 然而,如果你不去手工禁用它们,它们其实会一直运行。
    比如 我 会禁用下面这些HttpMoudle:
    
    <httpModules>
        <remove name="Session"/>
        <remove name="RoleManager"/>
        <remove name="PassportAuthentication"/>
        <remove name="Profile"/>
        <remove name="ServiceModel"/>
    </httpModules>
    对于使用Forms身份认证的网站的来说,下面这些HttpModule也是可以禁用的:
    
    <httpModules>
        <remove name="WindowsAuthentication"/>
        <remove name="FileAuthorization"/>
    </httpModules>
  • 相关阅读:
    [BAT]用BAT自作开机后自动启动截屏软件
    [TFS]如何彻底删除TFS上的团队项目
    [GIT]如何删除Git本地仓库
    [SQL] update select 查询的结果集
    [VS]反编译_DllToC#_REFLECTOR8.5
    Docker容器开机自动启动
    公告:开通csdn博客,敬请关注!
    1018 Public Bike Management
    微信红包算法
    LRU Cache
  • 原文地址:https://www.cnblogs.com/riddly/p/12928922.html
Copyright © 2020-2023  润新知