技术开发 频道

用ASP.NET实现文件的保护性下载基础篇

  四、HTTP处理程序

  实际上,使用ASP.NET定制HTTP处理程序并没有人们想象的那么复杂,下面我们用尽量容易理解的方式来讨论这一主题。HTTP处理程序的应用有很多,不过我们这里主要讨论它在文件保护问题方面的应用。

  图1 IIS中的扩展名映射

  下面我们将介绍什么是处理程序,及其工作原理,同时我们力争做到进行可能简单。在当ASP.NET环境中,您请求一个ASPX页面的时候,IIS会将该请求传递给相应的DLL来进行处理。所谓HTTP处理程序,就是处理IIS传给它们的请求的那些类。当您在机器上安装ASP.NET的时候,会随同向IIS添加一串表项(参见图 1)。这些表项包含希望ASP.NET处理的文件的扩展名(ASPX、ASMX等等)。当我们请求一个ASPX的时候,IIS收到该请求后,会将其传递给相应的DLL,在本例中为aspnet_isapi.dll,随后生产相应的HTTP处理程序实例来处理该请求。就ASPX页面而论,用到的HTTP处理程序是位于System.Web.UI命名空间中的一个Page类。

  就ASPX页面而论,页面处理程序用来控制和触发生命周期事件;当您浏览一个ASPX页面的时候,基本上一切工作都是由它来处理的。然而,您可以编写一个定制的HTTP处理程序来拦截浏览器发出的所有的请求,从而调整或者定制正常发生的动作。为此,我们需要用到多种技术,本文中我将首先讨论其中的IIS表项,以及Forms身份验证有关内容。

  五、IIS与Forms身份验证

  前面提过,IIS会把注册的扩展名发送到aspnet_isapi.dll。图1展示的是找到的已注册扩展名。我们可以在虚拟目录或者网站的“Properties”中的“Configuration”选项就可以看到这个对话框。带有由aspnet_isapi.dll进行处理的已注册扩展名的任何文件都受到ASP.NET的Forms身份验证的支配。下面我们对Forms身份验证的运行机制做简单介绍。

  定制的HTTP处理程序实际上就是实现了IHttpHandler接口的那些类。Forms身份验证允许您防止匿名用户在未授权的情况下访问某些web页面。文件web.config利用以下代码来设置Forms身份验证:

   <authentication mode="Forms">
  
<forms loginUrl="Login.aspx"/>
  
</authentication>
  
<authorization>
  
<deny users="?"/>
  
</authorization>

  上面的代码会防止没有通过身份验证的用户访问所有的页面。如果一个匿名用户试图访问一个网页,该代码会自动地将他们重定向到Login.aspx页面。这样一来,站点开发人员就能决定在这个页面中使用哪种身份验证方法,但是在ASP.NET 2.0中,开发人员可以很轻松地使用新的安全控件来完成此项工作。

  现在,我们说过这个代码能够阻止未通过身份验证的用户访问任何页面,但是准确来说它是阻止了未经认证的用户访问所有被aspnet_isapi.dll拦截的那些文件。这将在后面详加解释。为了给本文的后面的内容做铺垫,我们需要先描述示例电子商务站点的一些具体细节。

0
相关文章