如何在不登录网站的情况下阻止访问虚拟目录

时间:2014-02-03 16:11:31

标签: asp.net iis virtual-directory

我有一个目录包含一些文件, 我想只有在用户成功登录网站时才允许访问此目录中的文件。 登录用户和密码由aspNet Membership表管理并存储在DB中。

如果目录位于网站上会很容易,因为它默认受限制 但目录的物理路径在网站内 我更喜欢这样做,因为这个目录可以从其他网站访问

如何解决这个问题? 感谢

3 个答案:

答案 0 :(得分:1)

您应该将runAllManagedModulesForAllRequests属性添加到web.config中的modules标记,如下所示:

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
...
</modules>
...
</system.webServer>

这将对所有文件(如word文档等)强加您的dotnet安全性。然后,您可以使用web.config中的location部分来保护文件夹,如下所示:

<location path="SomeVirtualDirectory">
    <system.web>
        <authorization>
            <allow roles="admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

答案 1 :(得分:0)

无法在网站目录之外导航,因为它超出了您网站的范围,并且无法取决于网站凭据。

答案 2 :(得分:0)

文件目录不必是您网站的物理子目录。如果您add it as a virtual directory inside your application,则可以恰当地设置身份验证。

或者您可以发出类似this的内容:

string filename = @"F:\SomeDirectory\Foo.txt";
Response.TransmitFile(filename);

然后您可以在此页面上设置身份验证,例如名为DownloadFile.aspx