我的内容文件夹中有一些文件,我不希望用户在未经授权的情况下下载这些文件。如何防止用户通过在地址栏中键入 ...Content/{filename} 来访问文件?
问问题
3417 次
3 回答
4
有几种可能性。第一个包括<location>
在 web.config 中使用标签:
<location path="Content">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
另一种可能性是将这些文件放在没有人可以访问的文件夹中(例如 App_Data 文件夹),然后有一个控制器操作将服务于那些将用该[Authorize]
属性修饰的文件。
于 2012-05-29T07:48:24.973 回答
1
一种方法是将它放在 IIS 的上下文之外,而不是将它们放在下面C:\inetpub\wwwroot
将其更改为类似C:\temp\files
.
在您的数据库中有一个与文档名称关联的 GUID,并使用 GUID 显示文件的链接。
在您的控制器操作中,您只需接受 GUID,获取文件名,然后在您的响应中提供文件。
于 2012-05-29T07:47:22.457 回答
1
它对我不起作用。
<configuration>
<appSettings>
...
</appSettings>
<system.web>
...
</system.web>
<system.webServer>
...
</system.webServer>
<location path="Content">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
我运行我的 MVC 4.0 应用程序,登录和注销,无法访问任何应用程序页面,但仍然可以通过直接链接访问文件,例如
http://localhost:80966/Content/Files/home.jpg
于 2013-05-21T07:35:52.293 回答