如何允许已登录的用户能够直接从ASP.NET MVC应用程序下载文件

时间:2019-07-14 11:32:41

标签: c# asp.net-mvc

我有一个ASP.NET MVC应用程序,我希望登录的用户能够在应用程序路径内下载一些文件,并避免未登录的用户下载文件。

我希望该文件夹位于项目文件夹的根目录中

1 个答案:

答案 0 :(得分:1)

这取决于您要如何实现此方案:

第一种情况: 您可以将下载链接放在这些代码块中,以防止向未经授权的用户显示。

查看页面:

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

控制器:

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);
    }

第二种情况: 自由放置所有链接以显示给每个用户,但是当单击下载链接时,您需要验证用户的权限:

查看:

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

控制器

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

        //some code to download the file 
    }