在一个网站项目(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事件的情况下完成此任务的任何想法? 感谢
答案 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>