1

我想让匿名用户只浏览几个文件,如 default.aspx、aboutus.aspx、contactus.aspx 等。有没有办法将所有这些文件名写在一个地方,否则我将不得不一次又一次地重复下面的代码对于所有文件?

<location path="Default.aspx">
<system.web>
  <authorization>
    <allow users="*"  />
  </authorization>
</system.web>

4

2 回答 2

2

无法在单个位置元素中指定多个路径。我认为你要求做的是这样的:

<location path="Default.aspx,aboutus.aspx,contactus,aspx">
    <system.web>
        <authorization>
            <allow users="*"  />
        </authorization>
    </system.web>
</location>

不幸的是,我不相信这是可能的。

您有几种方法可以做到这一点。

A) 多次指定 location 元素,一个用于您希望允许匿名访问的每个文件:

<location path="Default.aspx">
    <system.web>
        <authorization>
            <allow users="*"  />
        </authorization>
    </system.web>
</location>
<location path="aboutus.aspx">
    <system.web>
        <authorization>
            <allow users="*"  />
        </authorization>
    </system.web>
</location>
<location path="contactus,aspx">
    <system.web>
        <authorization>
            <allow users="*"  />
        </authorization>
    </system.web>
</location>

B) 将您希望允许匿名访问的所有文件放在一个单独的目录中,就像上面提到的 Admirer 一样。

C)您可能想探索使用文件授权而不是 URL 授权。使用文件授权,您可以将 Windows ACL 权限直接分配给文件。可以将您想要保护的文件分配给一个 Windows 帐户,并将您希望允许匿名访问的文件分配给另一个 ACL 帐户。然后,您的任务是使用 ASP.Net 模拟来映射来自匿名访问请求的请求,以在只能访问未受保护文件的 Windows 帐户的安全上下文中执行,并将来自经过身份验证的请求的请求映射到 Windows 帐户有权访问所有文件。

我不确定您是否想走这条路,因为简单地多次复制“位置”元素可能要容易得多,对于要公开给匿名访问的每个资源一次。但是,如果您确实想研究这个,这里这里有一些很好的资源

于 2012-04-28T23:09:16.627 回答
0

我认为您可以根据文件夹名称进行分组。看看这个http://weblogs.asp.net/gurusakar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx

于 2012-04-28T22:04:32.083 回答