ASP.NET 2.0 HttpHandler實現對某種檔案類型許可權保護(範例程式碼下載)

來源:互聯網
上載者:User
asp.net|樣本|下載

學習整理了一下
(一). 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 /// <summary>
12 ///  只有 admin 許可權使用者才能直接查看 JPG和JPEG的圖片
13 /// </summary>
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 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 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 right</title>
 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!" Width="149px">A.jpeg</asp:LinkButton>
13          
14     </div>
15     </form>
16 </body>
17 </html>
18
 3.在Web.Config檔案中註冊自己的處理常式類配置

1 <system.web>
2     <httpHandlers>
3       <add verb="*" path="*.jpg,*.jpeg" type="JpgHandler" />     
4 </httpHandlers>
5 </system.web>
6
在這裡我是將處理常式類 JpgHandler.cs 放到 App_Code檔案夾下面,如果此類不是放在此類下面,而是以程式集*.dll格式的,則應該將此程式集放到bin目錄下面,並且這樣配置:

1 <system.web>
2     <httpHandlers>
3       <add verb="*" path="*.jpg,*.jpeg" type="JpgHandler,YourDll" />     
4 </httpHandlers>
5 </system.web>
6
  (三). 範例程式碼下載

           http://www.cnblogs.com/Files/ChengKing/JpgHttpHandler.rar


 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。