Web.siteMap中的绝对URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web.siteMap中的绝对URL相关的知识,希望对你有一定的参考价值。

在一个网站项目(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事件?谢谢

答案

因此,启用了安全修整,具有绝对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>

以上是关于Web.siteMap中的绝对URL的主要内容,如果未能解决你的问题,请参考以下文章

如何优化C ++代码的以下片段 - 卷中的零交叉

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

href="javascript:;"

URL 片段中的多个参数