日期:2014-05-20  浏览次数:20414 次

[文件下载]在没有登陆的情况下不允许用户下载文件,即使他有下载文件的URL
例如:当一个用户在地址栏中输入http://www.csdn.net/f.rar
在他没登陆的时候会弹出“禁止下载,请先登陆!”的对话框

------解决方案--------------------
可以使用form认证,就可以了
------解决方案--------------------
forms
------解决方案--------------------
做个HttpHandler:)
------解决方案--------------------
赞成 LoveCherry 的方法
------解决方案--------------------
up
------解决方案--------------------
首先,在 IIS 里面将提供下载的文件的扩展名映射到 aspnet_isapi.dll,比如 .rar

然后再在 Application_AcquireRequestState 里面验证 Session 判断用户是否已经登入。如果未登录则跳转至出错页面。
------解决方案--------------------
我已经在我自己的机器上试验成功了。LZ试试看。
------解决方案--------------------
搜索下URL重写就知道了
------解决方案--------------------
public class RARHandler:IHttpHandler,System.Web.SessionState.IRequiresSessionState
{
#region IHttpHandler 成员

public bool IsReusable
{
get { return true; }
}

public void ProcessRequest(HttpContext context)
{
HttpRequest req = context.Request;
//从Request对象中获取所请求文件的物理路径
string RAR_Path = req.PhysicalPath;
//设置HTTP输出的MIME类型
string ContentType = "application/x-tar ";
//根据Session中UserName是否存在判断用户是否登陆
if (context.Session[ "UserName "] == null)
{
//未登陆则设置状态代码为404
context.Response.StatusCode = 404;
context.Response.End();
}
else
{
//登陆则输出RAR文件
context.Response.StatusCode = 200;
context.Response.ContentType = ContentType;
context.Response.WriteFile(RAR_Path);
}
}

#endregion
}
------解决方案--------------------
建议把下载资源额外放在一个虚拟目录里面,配置一个web.config 文件,用http handle还要占用一定资源了。网上的虚拟主机,未必会让你去配置IIS

访问asp.net web 应用程序 有表单授权认证,windows认证, .passport认证==多种方式了。
具体配置了打开默认的web.config文件
<authorization>
<deny users= "? " />
</authorization>
禁止用户匿名访问
<authentication mode= "Forms ">
<forms name= ".userlogin " loginUrl= "Login.aspx " />
</authentication>
用户匿名访问被拒绝了以后 重定向到登陆页面。 .userlogin 是asp.net web 应用程序项目的名称了。
在configuration节点下面添加一些允许匿名访问页面,就差不多了。
<location path= "Reg.aspx ">
<system.web>
<authorization>
<allow users= "? " />
</authorization>
</system.web>
</location>
<location path= "ForgetPwd.aspx ">
<system.web>
<authorization>
<allow users= "? " />
</authorization>
</system.web>
</location>
<location path= "Default.aspx ">
<system.web>
<authorization>
<allow users= "? " />
</authorization>
</system.web>
</location>