您的位置:首页 > 理论基础 > 计算机网络

ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)

2007-11-16 09:44 1276 查看
(一). HttpHandlers能够处理对某种特定文件类型的请求.

例如, 在machine.config 文件中默认已经有大部分的系统处理Handlers:
<httpHandlers>
   <add verb=”*” path=”*.aspx” type=”System..Web.UI.PageHandlerFactory” />
   <add verb=”*” path=”*.ascx” type=”System..Web.HttpForbiddenHandler” />
   <add verb=”*” path=”*.cs” type=” System..Web.HttpForbiddenHandler” />
   <add verb=”*” path=”*.skin” type=” System..Web.HttpForbiddenHandler” />
   <add verb=”*” path=”*.sitemap” type=” System..Web.HttpForbiddenHandler” />
   …….
</httpHandlers>
创建一个HttpHandler也非常简单,下面将创建一个自定义的HttpHandler,
功能为验证访问: *.jpeg/jpg 图像文件权限. 通过这个示例演示其用法.

(二).代码如下

 1. 处理程序HttpHandler文件 JpgHandler.cs 代码

  

 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 
11 /// 
12 ///  只有 admin 权限用户才能直接查看 JPG和JPEG的图片
13 /// 
14 public class JpgHandler : IHttpHandler
15 {
16     public JpgHandler()
17     {    
18     }    
19 public void ProcessRequest(HttpContext hc)
20     {
21         string strFileName = hc.Server.MapPath( hc.Request.FilePath );
22         if (hc.User.IsInRole("admin"))  //当前用户是否为 admin 权限
23         {
24             hc.Response.ContentType = "image/JPEG";
25             hc.Response.WriteFile(strFileName);
26         }
27         else
28         {
29             hc.Response.ContentType = "image/JPEG";
30             hc.Response.Write("No Right");
31         }       
32     }
33     public bool IsReusable
34     {
35         get
36         {
37             return true;
38         }
39     }
40 }
41 

2.前台页面 *.aspx 代码

 1 
 2 
 3 DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml" >
 6 <head runat="server">
 7     <title>HttpHandler validate users righttitle>
 8 head>
 9 <body>
10     <form id="form1" runat="server">
11     <div>
12         <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="a.jpeg" ToolTip="Click me!" OnClick="LinkButton1_Click" Width="149px">A.jpegasp:LinkButton>
13          
14     div>
15     form>
16 body>
17 html>
18 
 3.在Web.Config文件中注册自己的处理程序类配置

[align=center]

1 <system.web>
2     <httpHandlers>
3       <add verb="*" path="*.jpg,*.jpeg" type="JpgHandler" />      
4 httpHandlers>
5 system.web>
6 [/align]

在这里我是将处理程序类 JpgHandler.cs 放到 App_Code文件夹下面,如果此类不是放在此类下面,而是以程序集*.dll格式的,则应该将此程序集放到bin目录下面,并且这样配置:

[align=center]

1 <system.web>
2     <httpHandlers>
3       <add verb="*" path="*.jpg,*.jpeg" type="JpgHandler,YourDll" />      
4 httpHandlers>
5 system.web>
6 [/align]

  (三). 示例代码下载

           http://www.cnblogs.com/Files/ChengKing/JpgHttpHandler.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐