5

我的内容文件夹中有一些文件,我不希望用户在未经授权的情况下下载这些文件。如何防止用户通过在地址栏中键入 ...Content/{filename} 来访问文件?

4

3 回答 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 回答