我们有一个我们想要保护的swf文件,只供授权用户使用。
我将文件嵌入到aspx页面中并且工作正常,因为ASP.NET处理aspx页面,我可以使用ASP.NET授权功能,并且在web.config中限制对roles =“AllowedUsers”的访问
然而,智能用户仍然可以直接访问该文件,例如www.mysite / flash.swf。我们希望进行这种访问安全。
非常感谢任何帮助!
谢谢!
答案 0 :(得分:5)
Aristos,
你是对的。在我回家之前的一个下午,我尝试创建一个自定义的HTTP处理程序。它工作得很好。 :-)感谢您回答+1
public class CustomFlashHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (!context.User.Identity.IsAuthenticated)
{
context.Response.Redirect("Default.aspx?ReturnUrl=%2felVideo.aspx");
context.Response.StatusCode = 401;
return;
}
var url = context.Request.CurrentExecutionFilePath;
if (string.IsNullOrEmpty(url)) return;
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("filename={0}", url));
HttpContext.Current.Response.AddHeader("Content-Type", "application/x-shockwave-flash");
HttpContext.Current.Response.WriteFile(url);
HttpContext.Current.Response.End();
}
public bool IsReusable
{
get { return false; }
}
}
像Aristos所说,你必须映射ASP.NET以处理IIS中的.swf文件。
alt text http://www.freeimagehosting.net/uploads/30424ac60a.png
然后在应用程序的web.config中添加自定义映射
<httpHandlers>
<add verb="*" path="*.swf" type="XXXXX.Web.XXXXX.CustomFlashHandler" validate="false" />
</httpHandlers>
1:href = http://www.freeimagehosting.net/&gt; http://www.freeimagehosting.net/uploads/30424ac60a.png
1:a href = http://www.freeimagehosting.net/&gt; http://www.freeimagehosting.net/uploads/30424ac60a.png border = 0 alt =“免费图片托管”&gt;
答案 1 :(得分:1)
我认为最简单快捷的解决方案是将此扩展(.swf)映射到asp.net来处理。
我不知道它是否有效,因为我没有这样做,但你可以尝试一下。
另一种方式是放置这些文件,隐藏的地方或复杂名称,并使用 .ashx 文件来阅读和发送它们。在.ashx文件中,您需要为Flash设置正确的 Response.ContentType ,然后阅读并发送正确的文件。