Asp.net Sitemaps - PullRequest
       10

Asp.net Sitemaps

0 голосов
/ 01 ноября 2011

Я столкнулся со следующей проблемой. Помогите, пожалуйста, используйте элемент управления меню и заполните его картой сайта.

У меня есть поставщик карты сайта, который выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
      <siteMapNode url="" title="Home"  description="" roles="*"  >
        <siteMapNode url="~/Default.aspx" title="PRA Profile" description=""roles="Partner"  >
             </siteMapNode >

        <siteMapNode url="" title="PRA Profile1" description="" roles="Partner">

          <siteMapNode url="~/New.aspx?id=1" title="Partner View"  description="Partner View"> </siteMapNode >
        </siteMapNode >
          <siteMapNode url="~/About.aspx" title="Estimator"  description="~/Test.aspx" roles ="Admin" >
      </siteMapNode >
        <siteMapNode url="~/About.aspx?id=3" title ="Reports" description ="" roles="Admin">
             </siteMapNode>
       </siteMapNode>
    </siteMap>

Я добавил securityTrimmingEnabled = "true" в web.config

Моя проблема заключается в том, что если я ввожу URL-адрес в родительский узел, то атрибут role не работает, иначе он работает нормально.

если в родительском узле я даю URL-адрес, то атрибут ролей терпит неудачу. Если я не даю URL-адрес и не добавляю дочерние узлы, то показ / скрытие меню на основе ролей работает отлично.Я должен показывать только родительский узел, когда «не администратор» входит в систему и отображать те же экраны, что и дочерние узлы, когда администратор входит в систему вместе с другими экранами.

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 01 ноября 2011

Атрибут Роли является улучшающим атрибутом.Другими словами, это повышает уровень безопасности, который является частью ваших настроек аутентификации на основе URL / ролей.Усечение безопасности выполняется на основе настроек безопасности URL-адреса в веб-конфигурации (или другого механизма аутентификации на основе URL / роли).

См. http://msdn.microsoft.com/en-us/library/ms178428.aspx

Если механизм аутентификации на основе URL-адреса используетweb.config для управления вашей аутентификацией на основе URL вам нужно добавить элемент местоположения с авторизацией в ваш web.config для URL, к которому вы пытаетесь контролировать доступ:

  <location path="PageWithAuthorization.aspx">
    <system.web>
      <authorization>
        <deny users="?"/>
        <allow roles="Allowed_Role"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

Этоосновной источник авторизации.Когда указанная выше страница является частью карты сайта и securityTrimmingEnabled = true, только те пользователи, которые находятся в «Allowed_Role», увидят ссылку на карту сайта.Добавив еще одну роль в атрибуте роли карты сайта, вы разрешите дополнительной роли также получить доступ к странице.

...