Web.siteMap中的绝对URL

时间:2014-01-22 10:15:53

标签: asp.net

在一个网站项目(VS 2010)中,我有一个<asp:Menu>,它使用启用了安全修整的System.Web.XmlSiteMapProvider在web.sitemap上提供。

一切运作良好。显然,用户必须通过身份验证为“管理员”才能从下面的示例中查看子节点。但问题是,带有绝对网址的网站地图节点未显示在菜单中。以下是web.sitemap的摘录:

<siteMapNode url="~/Administration/default.aspx" title="Administration" roles="Administrator" >
   <siteMapNode url="~/Administration/worksfine.aspx" title="Does show" />
   <siteMapNode url="http://pmspublic.in.ohchr.org" title="Does not show" />
</siteMapNode>

如何在不侵入菜单控件的DataBound事件的情况下完成此任务的任何想法? 感谢

1 个答案:

答案 0 :(得分:0)

因此启用了安全修整,并且具有绝对URL的节点位于受限制的SiteMapNode内。由于外部URL没有用于检查当前用户权限的web.config,因此只删除了相应的站点地图节点。

解决方案:roles="*"添加到绝对网址节点,将跳过该节点的安全修整,因为无论如何都允许每个人访问该节点。像这样:

<siteMapNode url="~/Administration/default.aspx" title="Administration" roles="Administrator" >
   <siteMapNode url="~/Administration/worksfine.aspx" title="Does show" />
   <siteMapNode url="http://pmspublic.in.ohchr.org" title="Does not show" roles="*" />
</siteMapNode>