我想让匿名用户只浏览几个文件,如 default.aspx、aboutus.aspx、contactus.aspx 等。有没有办法将所有这些文件名写在一个地方,否则我将不得不一次又一次地重复下面的代码对于所有文件?
<location path="Default.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
我想让匿名用户只浏览几个文件,如 default.aspx、aboutus.aspx、contactus.aspx 等。有没有办法将所有这些文件名写在一个地方,否则我将不得不一次又一次地重复下面的代码对于所有文件?
<location path="Default.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
无法在单个位置元素中指定多个路径。我认为你要求做的是这样的:
<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 帐户有权访问所有文件。
我不确定您是否想走这条路,因为简单地多次复制“位置”元素可能要容易得多,对于要公开给匿名访问的每个资源一次。但是,如果您确实想研究这个,这里或这里有一些很好的资源
我认为您可以根据文件夹名称进行分组。看看这个http://weblogs.asp.net/gurusakar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx