隐藏asp.net web.sitemap中的授权菜单项

时间:2009-01-29 13:57:18

标签: asp.net asp.net-membership asp.net-2.0 membership sitemap

我有一个启用了安全修整的web.sitemap,但是我需要将一个基于角色的菜单项隐藏到web.config中没有访问规则的页面。

即我有一个广告系列页面,用于查看现有广告系列以及添加新广告系列,但我希望为匿名用户隐藏“新广告系列”菜单项。 我尝试将角色名称添加到web.sitemap中的roles属性,但这没有效果。

我确信必须有一个快速的方法来做到这一点,而无需修改我的下一个停靠端口的站点地图提供程序。

2 个答案:

答案 0 :(得分:2)

如果这只是匿名用户的特例,您可以创建第二个SiteMap。

创建一个新文件WebAnon.sitemap 在web.config中创建一个新的站点地图提供程序

<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/>

如果是匿名用户,则将SiteMapDataSource的SiteMapProvider属性设置为后面的代码中的“anonProvider”。

答案 1 :(得分:1)

roles中的<siteMapNode />属性是“允许”列表,而不是拒绝。在web.config中创建/修改相应的<location />元素以允许经过身份验证的用户并拒绝匿名; e.g。

<location path="campaigns.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
   <deny users="?" />
  </authorization>
 </system.web>
</location>

顺便说一句,如果您使用的是Windows主体和角色,则在您注销然后重新开启之前,对您的群组成员身份的任何更改都不会生效。