gpt4 book ai didi

asp.net-mvc - 您如何拦截文件请求以检查 MVC3 中的权限?

转载 作者:行者123 更新时间:2023-12-02 22:34:06 31 4
gpt4 key购买 nike

我的文件上传在 ASP MVC3 网站上运行良好。目前,这些文件保存在网站上名为"file"的文件夹中。用户可以上传任何类型的文件(例如 myphoto.jpg、mydocument.docx 等)。

当用户上传文件时,我将有关该文件的信息以及上传者等信息存储在 SQL 数据库中。

我的问题:

  1. 如何拦截对文件 URL(例如/Files/myphoto.jpg)的 GET 请求以查看是否允许用户查看该文件? (基于他们在申请中的权利)?我不喜欢在允许访问之前编写路由约束来检查数据库的想法。
  2. 理想情况下,我希望将文件存储在与网站文件位置不同的位置,但网站可以从请求中确定文件及其位置的位置,但仍像在该位置一样提供文件请求(正确的内容类型 header 等)。

最佳答案

您可以添加一个 Controller 来为文件提供服务器。

public class FileController : Controller
{

private IFileStore _fileStore;

public FileController(IFileStrore fileStore)
{
this._fileStore = fileStore;
}

public ActionResult Index(string fileName)
{
// Do a database look up if the user has permission
if (_fileStore.HasPermission(fileName, User))
{
// Flush the file content if the user has permission
var myfile = _fileStore.GetFile(fileName);
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=" + myfile.FileName);
Response.AddHeader("Content-Length", myfile.Length.ToString());

Response.ContentType = myfile.Extension.ToLower();
Response.WriteFile(myfile.FullName, false);
Response.Flush();
Response.Close();
}
else
{
// Return a Access Denied page
return View("NoPermission");
}
}

}

关于asp.net-mvc - 您如何拦截文件请求以检查 MVC3 中的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11736069/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com