譬如:
像这样一个地址,有时通过直接点击就可以下下来,但实际上,通过控制,判断用户的权限,还是可以防止资源被直接下载的.
http://localhost/gv/upload/DesignPattern.rar
原理:
客户端对页面的请求,先会通过ISAPI(Internet Server Application Programe Interface),ISAPI会对不同类型的文件,进行分类处理.但是aspnet_isapi.dll 不可能对每种文件采用同一种方式处理,通过 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\ 中的web.config中的HttpHandlers节点,我们可以看出,有一些后缀的文件是通过特定的类处理的.
于是我们可以通过对某类特定文件,例如.rar后缀的文件,通过自己实现的一个类,实现对资源进行控制.
具体:
1.添加一个类,实现IHttpHandler接口.
public class DaoLian : IHttpHandler { public DaoLian() { // //TODO: 在此处添加构造函数逻辑 // } #region IHttpHandler 成员 public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { if ( ** == false) { HttpResponse Response = context.Response; Response.Redirect("~/Default5.aspx"); } } #endregion }
**为自己判断用户权限后返回的Boolean值.
其中,在ProcessRequest中,可以通过判断用户的权限,设置是允许下载,还是执行其他的操作.
2.添加对.rar文件的控制.
在web.config中添加对.rar文件的控制.
<system.web><httphandlers>...
<add verb="*" path="*.rar" type="DaoLian"/>
</system.web></httphandlers>
在IIS中,添加对.rar文件的控制.
在"默认网站"下所需的网站->"属性"->"配置"。在弹出的"应用程序配置"窗口里按"添加",在弹出的"添加/编辑应用程序扩展名映射"窗口里“可执行文件”选择C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。
此时,通过.rar后缀的文件,就可以进行控制了.
例如,对http://localhost/gv/upload/DesignPattern.rar进行访问的话,会跳转至"default5.aspx"页面上.