我有一个启用了安全修剪的 web.sitemap,但是我需要将基于角色的菜单项隐藏到在 web.config 中没有访问规则的页面。
即我有一个用于查看现有活动以及添加新活动的活动页面,但我希望对匿名用户隐藏“新活动”菜单项。我尝试将角色名称添加到 web.sitemap 中的角色属性,但这没有效果。
我确信必须有一种快速的方法来做到这一点,而无需修改站点地图提供程序,这是我的下一个停靠港。
我有一个启用了安全修剪的 web.sitemap,但是我需要将基于角色的菜单项隐藏到在 web.config 中没有访问规则的页面。
即我有一个用于查看现有活动以及添加新活动的活动页面,但我希望对匿名用户隐藏“新活动”菜单项。我尝试将角色名称添加到 web.sitemap 中的角色属性,但这没有效果。
我确信必须有一种快速的方法来做到这一点,而无需修改站点地图提供程序,这是我的下一个停靠港。
如果这只是匿名用户的特殊情况,您可以创建第二个 SiteMap。
创建一个新文件 WebAnon.sitemap。
在 web.config 中创建一个新的站点地图提供程序
<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/>
如果是匿名用户,则在后面的代码中将 SiteMapDataSource 的SiteMapProvider属性设置为“anonProvider”。
a 中的roles
属性<siteMapNode />
是“允许”列表,而不是拒绝。在 web.config 中创建/修改相应的<location />
元素以允许经过身份验证的用户并拒绝匿名;例如
<location path="campaigns.aspx">
<system.web>
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
</system.web>
</location>
顺便说一句,如果您使用的是 Windows 主体和角色,则对组成员身份的任何更改在您注销然后重新登录之前都不会生效。