考虑这种情况:我有一个使用Web API 2.x构建的REST API,并且身份验证由ASP.NET Identity管理。用户可以将附件作为其记录的一部分上载,这些附件全部存储在根文件夹中的磁盘上,位于名为Attachments
的目录下。
现在,用户可以从他们的记录中生成PDF。 PDF包含附件文件的链接,当您单击它们时,可以愉快地提供静态文件。例如:attachments/2018/01/somefile.jpeg
。
我需要做的是,向授权用户提供 ONLY 这些媒体文件。基本身份验证还不够,我只能说为所有登录用户提供服务媒体文件。我需要查询数据库,检查用户分配和/或其他安全措施,并决定是否应该提供文件。
我一直在寻找可行的解决方案。如何通过Web API处理此类路由并仅向授权用户提供静态内容?值得一提的是,我没有在我的项目中使用ASP.NET MVC。它只是Web API 2.x,带有用TypeScript编写的Angular 1.6应用程序。
答案 0 :(得分:0)
以下方法适合您。
第1步 -
拒绝web.config
中所有用户的附件文件夹的直接访问权限,如下所示。
<location path="attachments">
<system.web>
<authorization>
</authorization>
</system.web>
</location>
第2步:创建一个公共文件下载API,这应该是从服务器下载任何文件的唯一点。
您所有的安全链接应该看起来像/Download/somefilename
您可以通过针对登录用户检查请求文件,在Download API中实现数据级安全性。