实现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

 

如图:

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