惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
T
Tor Project blog
T
Troy Hunt's Blog
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
W
WeLiveSecurity
Cloudbric
Cloudbric
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
爱范儿
爱范儿
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
I
Intezer
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
腾讯CDC
L
LangChain Blog
L
LINUX DO - 热门话题
H
Help Net Security
S
Schneier on Security
N
Netflix TechBlog - Medium
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
Spread Privacy
Spread Privacy
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
P
Privacy & Cybersecurity Law Blog
Cyberwarzone
Cyberwarzone
A
About on SuperTechFans
NISL@THU
NISL@THU
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
Recorded Future
Recorded Future
雷峰网
雷峰网
AWS News Blog
AWS News Blog
V2EX - 技术
V2EX - 技术

博客园 - 圣炎¢天乐

Eds 公司 武汉 2008.2招聘 EDS 公司专用英文简历模板 GAT&GAX群 如何写自己的Guidance Packages(一) (转)聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术 GAT & GAX 简介 技巧/诀窍:在ASP.NET中重写URL 微软发布WF教程及大量示例 Web Service Software Factory SEO课程笔记(二) SEO课程笔记 InfoPath 2007 的一些开发资源 WPF的最新开发资料和文档 关于WPF的外观设计 - 圣炎¢天乐 - 博客园 WPF数据绑定 Page Controller (页面控制器)和Front Controller(前端控制器) MVC设计模式 关于.net中访问InfoPath 2007 的权限配置???? ADO.NET性能改善方法集合
编写自定义 HTTP 模块
圣炎¢天乐 · 2007-05-20 · via 博客园 - 圣炎¢天乐

编写自定义 HTTP 模块的一般过程是:

  • 实现 IHttpModule 接口。
  • 处理 Init 方法并注册到您需要的事件。
  • 处理事件。
  • 如果必须清理,也可以选择实现 Dispose 方法。
  • 在 web.config 文件中注册模块。

事件

下表显示了可以使用 ASP.NET 截取的、在处理请求期间产生的事件。所有事件都是按照发生的顺序列出的。

第一个列表显示了处理请求之前产生的事件。

  • BeginRequest. 此事件标志着这是一个新请求;每个请求都必须产生该事件。

  • AuthenticateRequest. 此事件标志着所配置的身份验证机制已经验证了请求。附加到此事件可向筛选器确保请求已通过身份验证。

  • AuthorizeRequest. 与 AuthenticateRequest 一样,此事件标志着现在请求在处理过程中又前进了一步,并且请求已经得到授权。

  • ResolveRequestCache. 输出缓存模块使用此事件来简化对已经缓存的请求所进行的处理。

  • AcquireRequestState. 此事件标志着应该获得各个请求状态。

  • PreRequestHandlerExecute. 此事件标志着请求处理程序将要执行。这是在调用此请求的 HTTP 处理程序之前您可以参与的最后一个事件。

下一个列表显示了处理请求之后产生的事件。这些事件是按照发生的顺序列出的:

  • PostRequestHandlerExecute. 此事件标志着 HTTP 处理程序已经完成了对请求的处理。

  • ReleaseRequestState. 此事件标志着应该存储请求状态,因为应用程序已经完成了对请求的处理。

  • UpdateRequestCache. 此事件标志着代码处理已完成,可以将文件添加到 ASP.NET 缓存中。

  • EndRequest. 此事件标志着已完成对请求的所有处理。这是应用程序结束时所调用的最后一个事件。

此外,以下三个请求处理前事件可以按不确定顺序引发:

  • PreSendRequestHeaders.此事件标志着 HTTP 头将要发送给客户端。因此可以在发送之前添加、删除或修改头信息。

  • PreSendRequestContent. 此事件标志着内容将要发送给客户端。这为发送之前修改内容提供了一个机会。

  • Error. 此事件标志着有未处理的异常。

下面的示例说明了请求在通过了 ASP.NET 运行库的身份验证之后是如何被截取的。对名为 UserLogger 的示例模块进行初始化时,它将把一个名为 OnAuthenticate 的成员函数连接到 AuthenticateRequest 事件。每次对新的请求进行身份验证时,都会调用 OnAuthenticate 函数。在本示例中,OnAuthenticate 函数将把通过了身份验证的用户的名称记录到 Intercepting Filter 模式应用程序事件日志中。


<httpModules> <add name="UserLogModule" type="UserLogModule, ifilter" /> </httpModules>

示例

下面是内置在 Microsoft .NET 中的截取筛选器的示例:

  • DefaultAuthenticationModule. 此筛选器确保 Authentication 对象出现在 HttpContext 对象中。

  • FileAuthorizationModule. 此筛选器验证远程用户是否拥有访问所请求的文件时所需的 Microsoft Windows NT® 权限。

  • FormsAuthenticationModule. 此筛选器使 ASP.NET 应用程序能够使用窗体验证。

  • PassportAuthenticationModule.此筛选器提供了包装 PassportAuthentication 服务以便进行 Passport 身份验证的包装器。

  • SessionStateModule. 此筛选器为应用程序提供会话状态服务。

  • UrlAuthorizationModule. 此筛选器提供基于 URL 的授权服务,以便允许或拒绝对指定 URL 进行访问。

  • WindowsAuthenticationModule. 此筛选器使 ASP.NET 应用程序能够使用 Microsoft Windows® 或 Internet 信息服务 (IIS) 的身份验证机制。