保护MVC中的文件夹

时间:2012-05-29 07:43:06

标签: asp.net-mvc model-view-controller

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

3 个答案:

答案 0 :(得分:3)

有几种可能性。第一个包括在web.config中使用<location>标记:

<location path="Content">
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</location>

另一种可能性是将这些文件放在无人可以访问的文件夹中(例如App_Data文件夹),然后让控制器操作为那些将使用[Authorize]属性修饰的文件提供服务。 / p>

答案 1 :(得分: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

答案 2 :(得分:0)

一种方法是将其置于IIS的上下文之外,因此不要将它们置于C:\inetpub\wwwroot

将其更改为C:\temp\files

数据库中的

具有与文档名称关联的GUID,并使用GUID显示文件的链接。

在您的控制器操作中,您只需接受GUID,获取文件名,然后在您的回复中提供该文件。