У нас есть swf файл, который мы хотим защитить и сделать доступным только для авторизованных пользователей.
Я встроил файл в aspx страницу, и это хорошо работает, начиная с дескрипторов ASP.NET aspx страница я могу использовать функции авторизации ASP.NET, и в web.config ограничивают доступ к ролям = "AllowedUsers", например.
Однако умные пользователи могли все еще добраться до файла путем доступа непосредственно, например, www.mysite/flash.swf. Мы хотим сделать такой доступ безопасным.
Любая справка значительно ценилась бы!
Спасибо!
Аристос,
Вы были правы. Вчера днем, незадолго до того, как я пошел домой, я попытался создать собственный обработчик 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; }
}
}
Как сказал Аристос, вам нужно сопоставить ASP.NET для обработки файлов .swf в IIS.
альтернативный текст 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/ > http: //www.freeimagehosting. net / uploads / 30424ac60a.png
1 : a href = http://www.freeimagehosting.net/ > http://www.freeimagehosting.net/uploads/30424ac60a.png border = 0 alt = "Хостинг бесплатных изображений">
Я думаю, что самым простым и быстрым решением будет Map этого расширения (.swf) для обработки asp.net.
Я не знаю, работает ли это, потому что я этого не делал, но вы можете попробовать.
Еще один способ - поместить эти файлы куда-нибудь в скрытое место или со сложным именем и использовать .ashx файл, чтобы просто читать и отправлять их. В файле .ashx вам нужно установить правильный Response.ContentType для флэш, и просто прочитать и отправить правильный файл.