我正在开发一个MVC网站,其中不同的用户可以上传多个图像。他们的想法是用户只能看到自己的图像。使用IIS中的虚拟文件夹存储用户图像将是一个简单的解决方案,但任何知道有效文件名的人都可以免费下载其他人的图片。
如果没有在文件级别手动设置权限,有人可以为此问题提出解决方案吗?
还要考虑到文件可能是10 MB。
提前致谢!
答案 0 :(得分:1)
所有静态内容,如图像,css,javascript都由IIS直接提供,不涉及MVC管道。因此,通过在web.config文件中添加以下标记,您可以确保所有请求都将被MVC管道覆盖。这将限制对图像的直接访问。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</system.webServer>
现在您必须创建一个ActionFilter来检查有效用户是否正在访问这些文件。因为您必须在图像名称中添加一些唯一的标识号。
每当用户发出图像请求时,只需获取文件名并从中提取唯一编号。并与当前登录的用户进行比较。