Web.siteMap中的绝对URL

问题描述 投票:0回答:1

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

一切顺利。显然,用户必须通过身份验证为“管理员”才能从下面的示例中查看子节点。但这里的问题是具有绝对URL的站点地图节点不会显示在菜单中。以下是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事件?谢谢

asp.net
1个回答
0
投票

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

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

<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>
© www.soinside.com 2019 - 2024. All rights reserved.