我有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配置问题。
答案 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)
答案 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代替。