17

在本地机器上,我在 mvc4(剃须刀)上创建了示例项目,并创建了名为“x”的目录,并在其中放入了一个文本文件“a.txt”。

http://localhost:64471/x/a.txt

在我的网络配置中,我拒绝所有用户通过此配置访问“x”文件夹:

<location path="x">
<system.web>
  <authorization>
    <deny users="*"/>
  </authorization>
</system.web>

现在,如果用户发送此请求:

http://localhost:64471/x/ 

它可以工作并将用户返回到 Web 配置中表单标签中定义的 URL。

但是当用户发送此请求时:

http://localhost:64471/x/a.txt

可以在浏览器中读取文本文件(浏览器显示文本文件的内容)。

我想知道如何拒绝用户访问“x”文件夹中的所有文件和子文件夹?

4

2 回答 2

12

我知道这是一个老问题,但如果您遇到问题并处理文本或 html 文件,您可能需要参考这个stackoverflow 问题。

简而言之,您可能需要将其添加到您的 web.config 中:

<system.webServer>
    <modules>
        <remove name="UrlAuthorization" />
        <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"  />
    </modules>
</system.webServer>

正如kirk指出的那样,.txt 和 .html 文件等文件由 IIS 而不是 ASP.NET 处理,因此授权规则不适用于它们。

于 2016-05-06T23:21:17.080 回答
6

path="x"在 root web.config 中进行了测试。它限制 x 文件夹下的所有内容;它甚至不允许我浏览 ~/x. 我被重定向到登录页面。

您可以在根 web.config 中尝试像这样的 a.txt 的完整路径吗?

<location path="x/a.txt">
  <system.web>
    <authorization>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

如果它仍然不起作用,您可以尝试在 x 文件夹中创建一个 web.config,其中包含以下内容。

<?xml version="1.0"?>
<configuration>

  <location path="a.txt">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

</configuration>
于 2013-09-26T20:00:30.020 回答