web.config授权是否适用于aspx以外的文件?

时间:2011-06-09 10:39:01

标签: asp.net authentication iis-7 iis-7.5

我有ASP.NET应用程序和表单身份验证。它运行良好,但我有一个目录与olly .txt文件(没有aspx文件),我希望用户不要访问(或只登录用户)。

我将web.config添加到此目录:

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

编辑:

这仅适用于.aspx文件。它不适用于.txt文件和类似文件。用户无法浏览此目录或子目录,但知道.txt文件名,他们可以访问它。

我尝试IIS6和IIS 7.5。在IIS6上.txt文件也受到限制,但在IIS 7.5上并非如此,可能是IIS配置问题。

3 个答案:

答案 0 :(得分:7)

您的问题取决于您使用的网络服务器。 ASP.NET授权仅适用于ASP.NET处理的文件类型。如果你有IIS 5或6,这通常不适用于.txt文件,甚至不适用于.jpg,.gif和纯.html文件,但仅适用于aspx,asmx等。

如果您拥有IIS7和集成模式,则没有问题,因为ASP.NET已集成并将针对每种类型的文件进行调用。因此,如果您有IIS5或6,则必须注册mime类型,例如aspnet.isapi也会调用.txt文件。

更新:

的配置
 <deny users="*"> 

锁定所有用户。它只能与allow一起使用,例如

<allow roles="administrators" /> 
<deny users="*"> 
像这样所有用户,但管理员将被锁定。如果用户经过身份验证但未经过管理员身份验证,则会将其重定向到登录页面。

另一种选择是仅锁定匿名用户:

<deny users="?"> 

答案 1 :(得分:3)

使用适当的设置location Element (ASP.NET Settings Schema)

位置部分添加到web.config

答案 2 :(得分:3)

如果您使用IIS 7+,则可以使用system.webServer / security / authorization http://www.iis.net/ConfigReference/system.webServer/security/authorization部分,并使其自动适用于任何管道模式中的任何类型的内容。 如果您仍想使用system.web seciton,那么您将需要使用Integreated Mode并执行模块中提到的更改以针对所有内容运行,但到目前为止,最简单的方法是使用system.webServer / security / authorization代替。