2014-01-22 3 views
0

В проекте веб-сайта (VS 2010) у меня есть <asp:Menu>, который питается в web.sitemap, используя System.Web.XmlSiteMapProvider с включенной защитой.Абсолютные URL-адреса в 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 Событие управления меню? Спасибо

ответ

0

Таким образом, включена обрезка безопасности, а узел с абспутным адресом находился в ограниченном SiteMapNode. Поскольку внешний URL-адрес не имеет web.config для проверки разрешений текущего пользователя, соответствующий узел Sitemap был просто удален.

Решение: Добавить 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> 
Смежные вопросы