2010-04-06 15 views
6

Tenemos un archivo swf que queremos asegurar y poner a disposición solo para usuarios autorizados.¿Cómo asegurar el acceso al archivo SWF utilizando ASP.NET?

Integré el archivo en una página aspx y funciona bien, ya que ASP.NET maneja la página aspx, puedo usar las características de autorización de ASP.NET y en el web.config restringir el acceso a roles = "AllowedUsers" para ejemplo.

Sin embargo, los usuarios inteligentes aún pueden acceder al archivo accediendo directamente, por ejemplo, a www.mysite/flash.swf. Queremos que ese tipo de acceso sea seguro.

Cualquier ayuda sería muy apreciada!

Gracias!

Respuesta

5

Aristos,

Tienes razón. La última tarde, justo antes de ir a casa, intenté crear un controlador HTTP personalizado. Y funcionó bien. :-) Gracias por contestar +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; } 
} 

}

Como Aristos dijo, tiene que asignar ASP.NET para manejar archivos .swf en IIS.

alt text http://www.freeimagehosting.net/uploads/30424ac60a.png

continuación, agregue la asignación personalizada en web.config de la aplicación

<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 = "Alojamiento de imágenes gratuito">

+0

gracias por compartir el código +1 para eso. :) – Aristos

1

Creo que la solución más fácil y rápida es asignar esta extensión (.swf) para manejar por asp.net.

No sé si funciona, porque no lo he hecho, pero puedes intentarlo.

Otra forma es colocar estos archivos ocultos en algún lugar, o con el nombre compleja y utilizar un archivo de .ashx a leer y enviarlos. En el archivo .ashx, debe configurar el Response.ContentType correcto para el flash, y simplemente lea y envíe el archivo correcto .

Cuestiones relacionadas