Tengo una aplicación ASP.NET MVC y quiero que los usuarios registrados puedan descargar algunos archivos dentro de la ruta de la aplicación y evitar que no haya iniciado sesión en los usuarios para descargar archivos.

Quiero que esta carpeta esté en la raíz de la carpeta del proyecto

0
Hamid Noahdi 14 jul. 2019 a las 14:32

1 respuesta

La mejor respuesta

Depende de que le gustaría implementar este escenario:

Primer escenario: puede poner sus enlaces de descarga dentro de este bloque de código, para evitar que se muestren a los usuarios no autorizados.

Ver pagina :

 @if (Utility.CheckActionPermission("ActionName", "ControllerName", "AreaName"))
            {
                 // your download link should be here               
            }

Controlador:

public static bool CheckActionPermission(string actionName, string controllerName, string areaName)
    {
        var accessUrl = string.Concat(areaName, "/", controllerName, "/", actionName);
        return ((CustomPrincipal)HttpContext.Current.User).Access.Any(a => a.Url == accessUrl);
    }

Segundo escenario: ponga todos sus enlaces libremente para mostrar a todos los usuarios, pero debe validar la autoridad del usuario cuando el enlace de descarga hizo clic:

Vista:

@Html.ActionLink("File Name", "DownloadFile", "ControllerName", new { fileName= @Model.FileName }, null)

Controlador

    [Authorize]
    public static bool DownloadFile(string fileName)
    {
        var filePath = Path.Combine(PathConstants.DownloadFolder, fileName);

        //some code to download the file 
    }
2
Majid 15 jul. 2019 a las 04:55