實現IHttpHandler接口來控制文件下載權限

今天碰到了一個很棘手的問題,由於原來從來沒做過這方面的考慮,所以一上來就把我搞蒙了,還好baidu,google了半天(連迅雷都用上了。。。)終於解決了這個問題。

 

如果你想控制某個.aspx頁面不讓未授權用戶訪問,那麼寫個web.config就OK了,但是如果你想控制rar,zip……等等文件的訪問就不是這麼簡單的了,有人說隱藏下載地址,用session判斷啊什麼的,我覺得這純屬是對付,萬一哪個哥們沒事幹就再那猜地址呢,如果是給小日本寫程序,那這麼寫沒問題。有一種辦法不錯,也不難。嘿嘿,爲什麼.aspx頁面寫個web.config就可以控制了呢,因爲你服務器上裝了.net(想抽我是吧?哈哈),因爲aspreg_iis.exe後iis中映射裏的.aspx等等文件的受理請求全部移交到了c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll這個文件來受理(版本不同,文件不同),所以它知道在你沒有登錄的時候把你直接推到login.aspx頁面去,這也就是爲什麼.aspx文件能控制訪問,而rar,zip等等文件無法控制了。

 

繼續說,爲什麼aspx文件能控制呢,因爲M$在aspnet_isapi.dll裏書寫了關於aspx類型的處理,所以只要寫個關於rar文件的處理就OK了。

步驟如下:

1)寫一個實現了IHttpHandler接口的類。

將此文件保存到~/App_Code/RarFileHandler.cs

代碼如下(裏面有點多餘代碼是爲了其他的判斷):

 

2)寫~/Web.config文件,內容如下:

 

3)配置一下IIS的類型映射

網站目錄->屬性->配置->映射->添加

 

可執行文件:c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll

擴展名:.rar

 

如圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章