首页 > 解决方案 > 将文件存储在我们的数据库中与将它们存储在文件服务器上。如果我想对可以查看文件的人应用自定义权限

问题描述

我正在开发一个 asp.net mvc 核心 Web 应用程序,它具有实体框架作为数据访问层。我在我们的应用程序中有一个文档管理模块,用户可以在其中上传“MS Office”、PDF、图像等文件。>>然后他们可以为每个文件设置权限>>要么公开,所以所有人都可以查看注册用户或仅对特定用户私有(他们可以从注册用户列表中选择用户)。

现在我们有两种方法可以在我们的 asp.net mvc 核心中存储和管理文件:-

  1. 将文件存储在我们主机服务器上的文件夹中
  2. 将文件存储在我们的数据库中。

所以我不确定哪种方法更适合我们?特别是我们可以选择对每个文件应用自定义权限.. 那么将文件存储在数据库中会更好吗?同样在未来,我们可能会允许最终用户指定是否要将文件加密作为第二级安全性。

第二个问题。如果我将文件存储在数据库中,那么用户可以将文件下载到他们的本地机器吗?并使用单独的 url 查看文件?谢谢

标签: .netasp.net-mvcentity-frameworkasp.net-coredatabase-design

解决方案


TL;DR:AFAICT,权限问题不应影响您的选择。调查将文件存储在磁盘上还是数据库中是否是正确的做法,忽略权限问题,您将得到答案。

无论您将文件存储在何处,都必须将权限存储在数据库中并在您的 ASP.NET 应用程序中强制执行这些权限。现在,要么你

  • 将每个文件存储在数据库中,并带有指向权限的指针,或者
  • 将每个文件的名称存储在数据库中,一个指向权限的指针和一个指向主机服务器上文件的指针。

当文件请求进入时,您的 ASP.NET 应用程序将在数据库中查找权限并评估它们。如果权限检查失败,它将向客户端返回错误。如果权限检查成功,它将从数据库或文件系统中检索文件。因此,这一切都归结为文件系统或数据库是否是一般的最佳解决方案,忽略权限问题。

有关优缺点,请参阅将图像存储在 DB 与文件夹结构中。


推荐阅读