在一个网站项目(VS 2010)中,我确实使用启用了安全修整的<asp:Menu>在web.sitemap上提供了一个System.Web.XmlSiteMapProvider。
一切都很好。显然,用户必须作为“管理员”身份验证才能从下面的示例中看到子节点。但这里的问题是,具有绝对urls的站点地图节点不会显示在菜单中。下面是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事件的情况下,如何做到这一点?谢谢
发布于 2014-01-22 10:15:52
因此,启用了安全修整,具有绝对url的节点位于受限的SiteMapNode中。由于外部URL没有一个web.config来检查当前用户的权限,因此简单地删除了相应的sitemap节点。
解决方案:向绝对url节点添加一个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>https://stackoverflow.com/questions/21279983
复制相似问题