我有一个ASP.NET MVC应用程序,我希望登录的用户能够在应用程序路径内下载一些文件,并避免未登录的用户下载文件。
我希望该文件夹位于项目文件夹的根目录中
答案 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
}