c# - mvc - render partial asp net core
¿Cómo sirvo archivos estáticos solo a usuarios autorizados en ASP.NET 5? (2)
Tengo una colección de hojas de cálculo de Excel que me gustaría publicar en mi aplicación web ASP.NET 5 solo para usuarios autorizados.
- ¿Dónde debería almacenar los archivos? Supongo que en wwwroot (por ejemplo, wwwroot / archivos).
- Si en wwwroot, ¿cómo puedo permitir el acceso solo a usuarios autorizados? (Me gustaría servirlos como [Authorize] FileResult desde el controlador, pero esto deja los archivos abiertos para el acceso directo a través de una URL, creo).
- ¿Cómo hago referencia a una ubicación en wwwroot a través de mi acción FileResult en el controlador?
¡Muchas gracias!
Sí, deberían ir en wwwroot. Actualmente no hay una forma integrada de asegurar los directorios de wwwroot. Pero crear un módulo de middleware para lograrlo es bastante sencillo. Hay un tutorial fácil de seguir aquí .
Si no está familiarizado con el desarrollo de middleware, publiqué un proyecto GitHub que muestra cómo crear middleware en tres sencillos pasos. Puedes descargar el proyecto aquí .
No necesita un controlador para acceder a los archivos estáticos.
en .net core crea un directorio dedicado www en el mismo nivel que wwwroot, y usa el siguiente código:
public HomeController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
[Authorize(Roles = "SomeRole")]
public IActionResult Performance()
{
return PhysicalFile(Path.Combine(_hostingEnvironment.ContentRootPath, "www", "MyStaticFile.pdf"), "application/pdf");
}
Según la siguiente respuesta (para .netCore): autorización de archivos estáticos